* re-make-list
@ 2020-02-10 5:11 Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 6:58 ` re-make-list tomas
0 siblings, 1 reply; 13+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 5:11 UTC (permalink / raw)
To: help-gnu-emacs; +Cc: emacs-devel
Make a list of regexp matches... perhaps
already in Emacs/ELPA/Joe Hacker's stash/etc?
Improvements AND comment look like this:
;; improvement
ha ha :)
;; this file: https://dataswamp.org/~incal/emacs-init/re-make-list.el
(defun re-make-list (re &optional start stop)
(interactive
(if (use-region-p)
(list (region-beginning) (region-end))
(list (point-min) (point-max)) ))
(save-excursion
(let ((matches ()))
(goto-char start)
(while (re-search-forward re stop t)
(push (match-string-no-properties 0) matches) )
matches) ))
;; Below are 139 colors, so the list should be
;; 139 items long...
;;
;; (length (re-make-list "#[0-9\\|A-F]\\{6\\}" (point) (point-max))) ; 139
;;
;; # /bin/zsh
;; #
;; # not really...
;; #
;; # https://www.rapidtables.com/web/color/RGB_Color.html
;; # maroon #800000 (128,0,0)
;; # dark red #8B0000 (139,0,0)
;; # brown #A52A2A (165,42,42)
;; # firebrick #B22222 (178,34,34)
;; # crimson #DC143C (220,20,60)
;; # red #FF0000 (255,0,0)
;; # tomato #FF6347 (255,99,71)
;; # coral #FF7F50 (255,127,80)
;; # indian red #CD5C5C (205,92,92)
;; # light coral #F08080 (240,128,128)
;; # dark salmon #E9967A (233,150,122)
;; # salmon #FA8072 (250,128,114)
;; # light salmon #FFA07A (255,160,122)
;; # orange red #FF4500 (255,69,0)
;; # dark orange #FF8C00 (255,140,0)
;; # orange #FFA500 (255,165,0)
;; # gold #FFD700 (255,215,0)
;; # dark golden rod #B8860B (184,134,11)
;; # golden rod #DAA520 (218,165,32)
;; # pale golden rod #EEE8AA (238,232,170)
;; # dark khaki #BDB76B (189,183,107)
;; # khaki #F0E68C (240,230,140)
;; # olive #808000 (128,128,0)
;; # yellow #FFFF00 (255,255,0)
;; # yellow green #9ACD32 (154,205,50)
;; # dark olive green #556B2F (85,107,47)
;; # olive drab #6B8E23 (107,142,35)
;; # lawn green #7CFC00 (124,252,0)
;; # chart reuse #7FFF00 (127,255,0)
;; # green yellow #ADFF2F (173,255,47)
;; # dark green #006400 (0,100,0)
;; # green #008000 (0,128,0)
;; # forest green #228B22 (34,139,34)
;; # lime #00FF00 (0,255,0)
;; # lime green #32CD32 (50,205,50)
;; # light green #90EE90 (144,238,144)
;; # pale green #98FB98 (152,251,152)
;; # dark sea green #8FBC8F (143,188,143)
;; # medium spring green #00FA9A (0,250,154)
;; # spring green #00FF7F (0,255,127)
;; # sea green #2E8B57 (46,139,87)
;; # medium aqua marine #66CDAA (102,205,170)
;; # medium sea green #3CB371 (60,179,113)
;; # light sea green #20B2AA (32,178,170)
;; # dark slate gray #2F4F4F (47,79,79)
;; # teal #008080 (0,128,128)
;; # dark cyan #008B8B (0,139,139)
;; # aqua #00FFFF (0,255,255)
;; # cyan #00FFFF (0,255,255)
;; # light cyan #E0FFFF (224,255,255)
;; # dark turquoise #00CED1 (0,206,209)
;; # turquoise #40E0D0 (64,224,208)
;; # medium turquoise #48D1CC (72,209,204)
;; # pale turquoise #AFEEEE (175,238,238)
;; # aqua marine #7FFFD4 (127,255,212)
;; # powder blue #B0E0E6 (176,224,230)
;; # cadet blue #5F9EA0 (95,158,160)
;; # steel blue #4682B4 (70,130,180)
;; # corn flower blue #6495ED (100,149,237)
;; # deep sky blue #00BFFF (0,191,255)
;; # dodger blue #1E90FF (30,144,255)
;; # light blue #ADD8E6 (173,216,230)
;; # sky blue #87CEEB (135,206,235)
;; # light sky blue #87CEFA (135,206,250)
;; # midnight blue #191970 (25,25,112)
;; # navy #000080 (0,0,128)
;; # dark blue #00008B (0,0,139)
;; # medium blue #0000CD (0,0,205)
;; # blue #0000FF (0,0,255)
;; # royal blue #4169E1 (65,105,225)
;; # blue violet #8A2BE2 (138,43,226)
;; # indigo #4B0082 (75,0,130)
;; # dark slate blue #483D8B (72,61,139)
;; # slate blue #6A5ACD (106,90,205)
;; # medium slate blue #7B68EE (123,104,238)
;; # medium purple #9370DB (147,112,219)
;; # dark magenta #8B008B (139,0,139)
;; # dark violet #9400D3 (148,0,211)
;; # dark orchid #9932CC (153,50,204)
;; # medium orchid #BA55D3 (186,85,211)
;; # purple #800080 (128,0,128)
;; # thistle #D8BFD8 (216,191,216)
;; # plum #DDA0DD (221,160,221)
;; # violet #EE82EE (238,130,238)
;; # magenta / fuchsia #FF00FF (255,0,255)
;; # orchid #DA70D6 (218,112,214)
;; # medium violet red #C71585 (199,21,133)
;; # pale violet red #DB7093 (219,112,147)
;; # deep pink #FF1493 (255,20,147)
;; # hot pink #FF69B4 (255,105,180)
;; # light pink #FFB6C1 (255,182,193)
;; # pink #FFC0CB (255,192,203)
;; # antique white #FAEBD7 (250,235,215)
;; # beige #F5F5DC (245,245,220)
;; # bisque #FFE4C4 (255,228,196)
;; # blanched almond #FFEBCD (255,235,205)
;; # wheat #F5DEB3 (245,222,179)
;; # corn silk #FFF8DC (255,248,220)
;; # lemon chiffon #FFFACD (255,250,205)
;; # light golden rod yellow #FAFAD2 (250,250,210)
;; # light yellow #FFFFE0 (255,255,224)
;; # saddle brown #8B4513 (139,69,19)
;; # sienna #A0522D (160,82,45)
;; # chocolate #D2691E (210,105,30)
;; # peru #CD853F (205,133,63)
;; # sandy brown #F4A460 (244,164,96)
;; # burly wood #DEB887 (222,184,135)
;; # tan #D2B48C (210,180,140)
;; # rosy brown #BC8F8F (188,143,143)
;; # moccasin #FFE4B5 (255,228,181)
;; # navajo white #FFDEAD (255,222,173)
;; # peach puff #FFDAB9 (255,218,185)
;; # misty rose #FFE4E1 (255,228,225)
;; # lavender blush #FFF0F5 (255,240,245)
;; # linen #FAF0E6 (250,240,230)
;; # old lace #FDF5E6 (253,245,230)
;; # papaya whip #FFEFD5 (255,239,213)
;; # sea shell #FFF5EE (255,245,238)
;; # mint cream #F5FFFA (245,255,250)
;; # slate gray #708090 (112,128,144)
;; # light slate gray #778899 (119,136,153)
;; # light steel blue #B0C4DE (176,196,222)
;; # lavender #E6E6FA (230,230,250)
;; # floral white #FFFAF0 (255,250,240)
;; # alice blue #F0F8FF (240,248,255)
;; # ghost white #F8F8FF (248,248,255)
;; # honeydew #F0FFF0 (240,255,240)
;; # ivory #FFFFF0 (255,255,240)
;; # azure #F0FFFF (240,255,255)
;; # snow #FFFAFA (255,250,250)
;; # black #000000 (0,0,0)
;; # dim gray / dim grey #696969 (105,105,105)
;; # gray / grey #808080 (128,128,128)
;; # dark gray / dark grey #A9A9A9 (169,169,169)
;; # silver #C0C0C0 (192,192,192)
;; # light gray / light grey #D3D3D3 (211,211,211)
;; # gainsboro #DCDCDC (220,220,220)
;; # white smoke #F5F5F5 (245,245,245)
;; # white #FFFFFF (255,255,255)
--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 5:11 re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
@ 2020-02-10 6:58 ` tomas
2020-02-10 7:37 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
0 siblings, 1 reply; 13+ messages in thread
From: tomas @ 2020-02-10 6:58 UTC (permalink / raw)
To: help-gnu-emacs
[-- Attachment #1: Type: text/plain, Size: 1083 bytes --]
On Mon, Feb 10, 2020 at 06:11:25AM +0100, Emanuel Berg via Users list for the GNU Emacs text editor wrote:
> Make a list of regexp matches... perhaps
> already in Emacs/ELPA/Joe Hacker's stash/etc?
>
> Improvements AND comment look like this:
>
> ;; improvement
>
> ha ha :)
>
> ;; this file: https://dataswamp.org/~incal/emacs-init/re-make-list.el
>
> (defun re-make-list (re &optional start stop)
> (interactive
> (if (use-region-p)
> (list (region-beginning) (region-end))
> (list (point-min) (point-max)) ))
> (save-excursion
> (let ((matches ()))
> (goto-char start)
> (while (re-search-forward re stop t)
> (push (match-string-no-properties 0) matches) )
> matches) ))
[...]
If you don't mind the matches being returned in reverse order, that's
fine. Otherwise you might consider returning (reverse matches).
In your case, since you build a fresh list which nobody else sees,
you might get away returning (nreverse matches) without the Functional
Gods frowning at you ;-)
Cheers
-- t
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 6:58 ` re-make-list tomas
@ 2020-02-10 7:37 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 8:02 ` re-make-list tomas
0 siblings, 1 reply; 13+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 7:37 UTC (permalink / raw)
To: help-gnu-emacs
tomas wrote:
> In your case, since you build a fresh list
> which nobody else sees, you might get away
> returning (nreverse matches) without the
> Functional Gods frowning at you ;-)
Actually it will be visible indeed :)
Because I now have a LED-keyboard and I thought
I'd have a function that gave a fresh color
randomly, but not too randomly, still colors
that made sense...
So I got the list from the web but it still
needs some computing...
As for now, 'warmy' is the most creative:
https://dataswamp.org/~incal/conf/.zsh/led-kb
--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 7:37 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
@ 2020-02-10 8:02 ` tomas
2020-02-10 8:48 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
0 siblings, 1 reply; 13+ messages in thread
From: tomas @ 2020-02-10 8:02 UTC (permalink / raw)
To: help-gnu-emacs
[-- Attachment #1: Type: text/plain, Size: 710 bytes --]
On Mon, Feb 10, 2020 at 08:37:48AM +0100, Emanuel Berg via Users list for the GNU Emacs text editor wrote:
> tomas wrote:
>
> > In your case, since you build a fresh list
> > which nobody else sees, you might get away
> > returning (nreverse matches) without the
> > Functional Gods frowning at you ;-)
>
> Actually it will be visible indeed :)
It seems I was unclear. I was talking about your variable
"matches", which you create whithin the function and let
grow with each match found. Since that variable is not
visible outside the function's scope, you can afford the
(potentially) more efficient nreverse.
Sorry for the confusion. Just ignore if still unclear :)
Cheers
-- tomás
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 8:02 ` re-make-list tomas
@ 2020-02-10 8:48 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 9:18 ` re-make-list tomas
2020-02-10 13:27 ` re-make-list Stefan Monnier
0 siblings, 2 replies; 13+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 8:48 UTC (permalink / raw)
To: help-gnu-emacs
tomas wrote:
>> Actually it will be visible indeed :) [...]
>
> It seems I was unclear. I was talking about
> your variable "matches", which you create
> whithin the function and let grow with each
> match found. Since that variable is not
> visible outside the function's scope, you can
> afford the (potentially) more
> efficient nreverse.
>
> Sorry for the confusion. Just ignore if still
> unclear :)
Okay... but what should I do if its still
clear then?
--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 8:48 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
@ 2020-02-10 9:18 ` tomas
2020-02-10 13:27 ` re-make-list Stefan Monnier
1 sibling, 0 replies; 13+ messages in thread
From: tomas @ 2020-02-10 9:18 UTC (permalink / raw)
To: help-gnu-emacs
[-- Attachment #1: Type: text/plain, Size: 458 bytes --]
On Mon, Feb 10, 2020 at 09:48:10AM +0100, Emanuel Berg via Users list for the GNU Emacs text editor wrote:
> tomas wrote:
>
> >> Actually it will be visible indeed :) [...]
> >
> > It seems I was unclear [...]
> > Sorry for the confusion. Just ignore if still
> > unclear :)
>
> Okay... but what should I do if its still
> clear then?
Then you've got all you need for a founded choice.
(or (ignore) (unignore)) I'd say :-)
Cheers
-- t
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 8:48 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 9:18 ` re-make-list tomas
@ 2020-02-10 13:27 ` Stefan Monnier
2020-02-10 14:04 ` re-make-list tomas
2020-02-10 23:28 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
1 sibling, 2 replies; 13+ messages in thread
From: Stefan Monnier @ 2020-02-10 13:27 UTC (permalink / raw)
To: help-gnu-emacs
> Okay... but what should I do if its still
> clear then?
Usually converting to CPS is a good first step to solve these kinds
of problems.
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 13:27 ` re-make-list Stefan Monnier
@ 2020-02-10 14:04 ` tomas
2020-02-10 19:40 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 23:28 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
1 sibling, 1 reply; 13+ messages in thread
From: tomas @ 2020-02-10 14:04 UTC (permalink / raw)
To: help-gnu-emacs
[-- Attachment #1: Type: text/plain, Size: 286 bytes --]
On Mon, Feb 10, 2020 at 08:27:07AM -0500, Stefan Monnier wrote:
> > Okay... but what should I do if its still
> > clear then?
>
> Usually converting to CPS is a good first step to solve these kinds
> of problems.
You mean... it's less clear after that?
;-)
Cheers
-- t
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 14:04 ` re-make-list tomas
@ 2020-02-10 19:40 ` Emanuel Berg via Users list for the GNU Emacs text editor
0 siblings, 0 replies; 13+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 19:40 UTC (permalink / raw)
To: help-gnu-emacs
tomas wrote:
> On Mon, Feb 10, 2020 at 08:27:07AM -0500,
> Stefan Monnier wrote:
>
>>> Okay... but what should I do if its still
>>> clear then?
>>
>> Usually converting to CPS is a good first
>> step to solve these kinds of problems.
>
> You mean... it's less clear after that?
>
> ;-)
???
You mean you never heard of the
continuation-passing style?
In functional programming, continuation-passing
style (CPS) is a style of programming in which
control is passed explicitly in the form of
a continuation. This is contrasted with direct
style ... [1]
It makes so much sense - Emanuel Berg's style
being so direct, I mean :)
[1] https://en.wikipedia.org/wiki/Continuation-passing_style
--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 13:27 ` re-make-list Stefan Monnier
2020-02-10 14:04 ` re-make-list tomas
@ 2020-02-10 23:28 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-11 3:44 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
1 sibling, 1 reply; 13+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-10 23:28 UTC (permalink / raw)
To: help-gnu-emacs
Stefan Monnier wrote:
>> Okay... but what should I do if its still
>> clear then?
>
> Usually converting to CPS is a good first
> step to solve these kinds of problems.
CPS seems to be some version of recursion but
where instead of removing an item from a list
or decreasing a digit one provides f1(a f2) and
it is the function that changes fn..f2(f1(a))
until it and thus the whole thing terminates.
So f2 is the "explicit continuation function"
[1] to f1, the one that gets called after f1
has done its operations on the value
original argument.
Maybe?
[1] https://en.wikipedia.org/wiki/Continuation-passing_style
--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-10 23:28 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
@ 2020-02-11 3:44 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-11 14:30 ` re-make-list Stefan Monnier
0 siblings, 1 reply; 13+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-11 3:44 UTC (permalink / raw)
To: help-gnu-emacs
Stefan Monnier wrote:
>>> Okay... but what should I do if its still
>>> clear then?
>>
>> Usually converting to CPS is a good first
>> step to solve these kinds of problems.
If CPS is about like with `reverse' and
`nreverse', which I take it are the quadratic
and linear versions of the same unelegant last
thing of reversing all good enough government
job already done, then relax, one can do it
with the "direct" style as well - and even
directly so, by just fliping the first
`re-make-list', which is direct to begin with!
Ema-CPS 2-0
;; this file: https://dataswamp.org/~incal/emacs-init/re-make-list.el
(defun re-make-list-forward (re &optional start stop)
(interactive
(if (use-region-p)
(list (region-beginning) (region-end))
(list (point-min) (point-max)) ))
(save-excursion
(let ((matches ()))
(goto-char start)
(while (re-search-forward re stop t)
(push (match-string-no-properties 0) matches) )
matches) ))
(defalias 're-make-list #'re-make-list-forward)
(defun re-make-list-backward (re &optional start stop)
(interactive
(if (use-region-p)
(list (region-beginning) (region-end))
(list (point-min) (point-max)) ))
(save-excursion
(let ((matches ()))
(goto-char stop)
(while (re-search-backward re start t)
(push (match-string-no-properties 0) matches) )
matches) ))
;; Below are 139 colors, so the list should be
;; 139 items long...
;;
;; (length (re-make-list-forward "#[0-9\\|A-F]\\{6\\}" (point) (point-max))) ; 139
;; (length (re-make-list-backward "#[0-9\\|A-F]\\{6\\}" (point) (point-max))) ; 139
;;
;; # /bin/zsh
;; #
;; # not really...
;; #
;; # https://www.rapidtables.com/web/color/RGB_Color.html
;; # maroon #800000 (128,0,0)
;; # dark red #8B0000 (139,0,0)
;; # brown #A52A2A (165,42,42)
;; # firebrick #B22222 (178,34,34)
;; # crimson #DC143C (220,20,60)
;; # red #FF0000 (255,0,0)
;; # tomato #FF6347 (255,99,71)
;; # coral #FF7F50 (255,127,80)
;; # indian red #CD5C5C (205,92,92)
;; # light coral #F08080 (240,128,128)
;; # dark salmon #E9967A (233,150,122)
;; # salmon #FA8072 (250,128,114)
;; # light salmon #FFA07A (255,160,122)
;; # orange red #FF4500 (255,69,0)
;; # dark orange #FF8C00 (255,140,0)
;; # orange #FFA500 (255,165,0)
;; # gold #FFD700 (255,215,0)
;; # dark golden rod #B8860B (184,134,11)
;; # golden rod #DAA520 (218,165,32)
;; # pale golden rod #EEE8AA (238,232,170)
;; # dark khaki #BDB76B (189,183,107)
;; # khaki #F0E68C (240,230,140)
;; # olive #808000 (128,128,0)
;; # yellow #FFFF00 (255,255,0)
;; # yellow green #9ACD32 (154,205,50)
;; # dark olive green #556B2F (85,107,47)
;; # olive drab #6B8E23 (107,142,35)
;; # lawn green #7CFC00 (124,252,0)
;; # chart reuse #7FFF00 (127,255,0)
;; # green yellow #ADFF2F (173,255,47)
;; # dark green #006400 (0,100,0)
;; # green #008000 (0,128,0)
;; # forest green #228B22 (34,139,34)
;; # lime #00FF00 (0,255,0)
;; # lime green #32CD32 (50,205,50)
;; # light green #90EE90 (144,238,144)
;; # pale green #98FB98 (152,251,152)
;; # dark sea green #8FBC8F (143,188,143)
;; # medium spring green #00FA9A (0,250,154)
;; # spring green #00FF7F (0,255,127)
;; # sea green #2E8B57 (46,139,87)
;; # medium aqua marine #66CDAA (102,205,170)
;; # medium sea green #3CB371 (60,179,113)
;; # light sea green #20B2AA (32,178,170)
;; # dark slate gray #2F4F4F (47,79,79)
;; # teal #008080 (0,128,128)
;; # dark cyan #008B8B (0,139,139)
;; # aqua #00FFFF (0,255,255)
;; # cyan #00FFFF (0,255,255)
;; # light cyan #E0FFFF (224,255,255)
;; # dark turquoise #00CED1 (0,206,209)
;; # turquoise #40E0D0 (64,224,208)
;; # medium turquoise #48D1CC (72,209,204)
;; # pale turquoise #AFEEEE (175,238,238)
;; # aqua marine #7FFFD4 (127,255,212)
;; # powder blue #B0E0E6 (176,224,230)
;; # cadet blue #5F9EA0 (95,158,160)
;; # steel blue #4682B4 (70,130,180)
;; # corn flower blue #6495ED (100,149,237)
;; # deep sky blue #00BFFF (0,191,255)
;; # dodger blue #1E90FF (30,144,255)
;; # light blue #ADD8E6 (173,216,230)
;; # sky blue #87CEEB (135,206,235)
;; # light sky blue #87CEFA (135,206,250)
;; # midnight blue #191970 (25,25,112)
;; # navy #000080 (0,0,128)
;; # dark blue #00008B (0,0,139)
;; # medium blue #0000CD (0,0,205)
;; # blue #0000FF (0,0,255)
;; # royal blue #4169E1 (65,105,225)
;; # blue violet #8A2BE2 (138,43,226)
;; # indigo #4B0082 (75,0,130)
;; # dark slate blue #483D8B (72,61,139)
;; # slate blue #6A5ACD (106,90,205)
;; # medium slate blue #7B68EE (123,104,238)
;; # medium purple #9370DB (147,112,219)
;; # dark magenta #8B008B (139,0,139)
;; # dark violet #9400D3 (148,0,211)
;; # dark orchid #9932CC (153,50,204)
;; # medium orchid #BA55D3 (186,85,211)
;; # purple #800080 (128,0,128)
;; # thistle #D8BFD8 (216,191,216)
;; # plum #DDA0DD (221,160,221)
;; # violet #EE82EE (238,130,238)
;; # magenta / fuchsia #FF00FF (255,0,255)
;; # orchid #DA70D6 (218,112,214)
;; # medium violet red #C71585 (199,21,133)
;; # pale violet red #DB7093 (219,112,147)
;; # deep pink #FF1493 (255,20,147)
;; # hot pink #FF69B4 (255,105,180)
;; # light pink #FFB6C1 (255,182,193)
;; # pink #FFC0CB (255,192,203)
;; # antique white #FAEBD7 (250,235,215)
;; # beige #F5F5DC (245,245,220)
;; # bisque #FFE4C4 (255,228,196)
;; # blanched almond #FFEBCD (255,235,205)
;; # wheat #F5DEB3 (245,222,179)
;; # corn silk #FFF8DC (255,248,220)
;; # lemon chiffon #FFFACD (255,250,205)
;; # light golden rod yellow #FAFAD2 (250,250,210)
;; # light yellow #FFFFE0 (255,255,224)
;; # saddle brown #8B4513 (139,69,19)
;; # sienna #A0522D (160,82,45)
;; # chocolate #D2691E (210,105,30)
;; # peru #CD853F (205,133,63)
;; # sandy brown #F4A460 (244,164,96)
;; # burly wood #DEB887 (222,184,135)
;; # tan #D2B48C (210,180,140)
;; # rosy brown #BC8F8F (188,143,143)
;; # moccasin #FFE4B5 (255,228,181)
;; # navajo white #FFDEAD (255,222,173)
;; # peach puff #FFDAB9 (255,218,185)
;; # misty rose #FFE4E1 (255,228,225)
;; # lavender blush #FFF0F5 (255,240,245)
;; # linen #FAF0E6 (250,240,230)
;; # old lace #FDF5E6 (253,245,230)
;; # papaya whip #FFEFD5 (255,239,213)
;; # sea shell #FFF5EE (255,245,238)
;; # mint cream #F5FFFA (245,255,250)
;; # slate gray #708090 (112,128,144)
;; # light slate gray #778899 (119,136,153)
;; # light steel blue #B0C4DE (176,196,222)
;; # lavender #E6E6FA (230,230,250)
;; # floral white #FFFAF0 (255,250,240)
;; # alice blue #F0F8FF (240,248,255)
;; # ghost white #F8F8FF (248,248,255)
;; # honeydew #F0FFF0 (240,255,240)
;; # ivory #FFFFF0 (255,255,240)
;; # azure #F0FFFF (240,255,255)
;; # snow #FFFAFA (255,250,250)
;; # black #000000 (0,0,0)
;; # dim gray / dim grey #696969 (105,105,105)
;; # gray / grey #808080 (128,128,128)
;; # dark gray / dark grey #A9A9A9 (169,169,169)
;; # silver #C0C0C0 (192,192,192)
;; # light gray / light grey #D3D3D3 (211,211,211)
;; # gainsboro #DCDCDC (220,220,220)
;; # white smoke #F5F5F5 (245,245,245)
;; # white #FFFFFF (255,255,255)
--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-11 3:44 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
@ 2020-02-11 14:30 ` Stefan Monnier
2020-02-11 16:47 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
0 siblings, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2020-02-11 14:30 UTC (permalink / raw)
To: help-gnu-emacs
I didn't realize how CPS is not just technically a good first step, but
also at a more meta-level it's proved a great first step!
Stefan
Emanuel Berg via Users list for the GNU Emacs text editor [2020-02-11 04:44:05] wrote:
> Stefan Monnier wrote:
>
>>>> Okay... but what should I do if its still
>>>> clear then?
>>>
>>> Usually converting to CPS is a good first
>>> step to solve these kinds of problems.
>
> If CPS is about like with `reverse' and
> `nreverse', which I take it are the quadratic
> and linear versions of the same unelegant last
> thing of reversing all good enough government
> job already done, then relax, one can do it
> with the "direct" style as well - and even
> directly so, by just fliping the first
> `re-make-list', which is direct to begin with!
>
> Ema-CPS 2-0
>
> ;; this file: https://dataswamp.org/~incal/emacs-init/re-make-list.el
>
> (defun re-make-list-forward (re &optional start stop)
> (interactive
> (if (use-region-p)
> (list (region-beginning) (region-end))
> (list (point-min) (point-max)) ))
> (save-excursion
> (let ((matches ()))
> (goto-char start)
> (while (re-search-forward re stop t)
> (push (match-string-no-properties 0) matches) )
> matches) ))
> (defalias 're-make-list #'re-make-list-forward)
>
> (defun re-make-list-backward (re &optional start stop)
> (interactive
> (if (use-region-p)
> (list (region-beginning) (region-end))
> (list (point-min) (point-max)) ))
> (save-excursion
> (let ((matches ()))
> (goto-char stop)
> (while (re-search-backward re start t)
> (push (match-string-no-properties 0) matches) )
> matches) ))
>
> ;; Below are 139 colors, so the list should be
> ;; 139 items long...
> ;;
> ;; (length (re-make-list-forward "#[0-9\\|A-F]\\{6\\}" (point) (point-max))) ; 139
> ;; (length (re-make-list-backward "#[0-9\\|A-F]\\{6\\}" (point) (point-max))) ; 139
> ;;
> ;; # /bin/zsh
> ;; #
> ;; # not really...
> ;; #
> ;; # https://www.rapidtables.com/web/color/RGB_Color.html
> ;; # maroon #800000 (128,0,0)
> ;; # dark red #8B0000 (139,0,0)
> ;; # brown #A52A2A (165,42,42)
> ;; # firebrick #B22222 (178,34,34)
> ;; # crimson #DC143C (220,20,60)
> ;; # red #FF0000 (255,0,0)
> ;; # tomato #FF6347 (255,99,71)
> ;; # coral #FF7F50 (255,127,80)
> ;; # indian red #CD5C5C (205,92,92)
> ;; # light coral #F08080 (240,128,128)
> ;; # dark salmon #E9967A (233,150,122)
> ;; # salmon #FA8072 (250,128,114)
> ;; # light salmon #FFA07A (255,160,122)
> ;; # orange red #FF4500 (255,69,0)
> ;; # dark orange #FF8C00 (255,140,0)
> ;; # orange #FFA500 (255,165,0)
> ;; # gold #FFD700 (255,215,0)
> ;; # dark golden rod #B8860B (184,134,11)
> ;; # golden rod #DAA520 (218,165,32)
> ;; # pale golden rod #EEE8AA (238,232,170)
> ;; # dark khaki #BDB76B (189,183,107)
> ;; # khaki #F0E68C (240,230,140)
> ;; # olive #808000 (128,128,0)
> ;; # yellow #FFFF00 (255,255,0)
> ;; # yellow green #9ACD32 (154,205,50)
> ;; # dark olive green #556B2F (85,107,47)
> ;; # olive drab #6B8E23 (107,142,35)
> ;; # lawn green #7CFC00 (124,252,0)
> ;; # chart reuse #7FFF00 (127,255,0)
> ;; # green yellow #ADFF2F (173,255,47)
> ;; # dark green #006400 (0,100,0)
> ;; # green #008000 (0,128,0)
> ;; # forest green #228B22 (34,139,34)
> ;; # lime #00FF00 (0,255,0)
> ;; # lime green #32CD32 (50,205,50)
> ;; # light green #90EE90 (144,238,144)
> ;; # pale green #98FB98 (152,251,152)
> ;; # dark sea green #8FBC8F (143,188,143)
> ;; # medium spring green #00FA9A (0,250,154)
> ;; # spring green #00FF7F (0,255,127)
> ;; # sea green #2E8B57 (46,139,87)
> ;; # medium aqua marine #66CDAA (102,205,170)
> ;; # medium sea green #3CB371 (60,179,113)
> ;; # light sea green #20B2AA (32,178,170)
> ;; # dark slate gray #2F4F4F (47,79,79)
> ;; # teal #008080 (0,128,128)
> ;; # dark cyan #008B8B (0,139,139)
> ;; # aqua #00FFFF (0,255,255)
> ;; # cyan #00FFFF (0,255,255)
> ;; # light cyan #E0FFFF (224,255,255)
> ;; # dark turquoise #00CED1 (0,206,209)
> ;; # turquoise #40E0D0 (64,224,208)
> ;; # medium turquoise #48D1CC (72,209,204)
> ;; # pale turquoise #AFEEEE (175,238,238)
> ;; # aqua marine #7FFFD4 (127,255,212)
> ;; # powder blue #B0E0E6 (176,224,230)
> ;; # cadet blue #5F9EA0 (95,158,160)
> ;; # steel blue #4682B4 (70,130,180)
> ;; # corn flower blue #6495ED (100,149,237)
> ;; # deep sky blue #00BFFF (0,191,255)
> ;; # dodger blue #1E90FF (30,144,255)
> ;; # light blue #ADD8E6 (173,216,230)
> ;; # sky blue #87CEEB (135,206,235)
> ;; # light sky blue #87CEFA (135,206,250)
> ;; # midnight blue #191970 (25,25,112)
> ;; # navy #000080 (0,0,128)
> ;; # dark blue #00008B (0,0,139)
> ;; # medium blue #0000CD (0,0,205)
> ;; # blue #0000FF (0,0,255)
> ;; # royal blue #4169E1 (65,105,225)
> ;; # blue violet #8A2BE2 (138,43,226)
> ;; # indigo #4B0082 (75,0,130)
> ;; # dark slate blue #483D8B (72,61,139)
> ;; # slate blue #6A5ACD (106,90,205)
> ;; # medium slate blue #7B68EE (123,104,238)
> ;; # medium purple #9370DB (147,112,219)
> ;; # dark magenta #8B008B (139,0,139)
> ;; # dark violet #9400D3 (148,0,211)
> ;; # dark orchid #9932CC (153,50,204)
> ;; # medium orchid #BA55D3 (186,85,211)
> ;; # purple #800080 (128,0,128)
> ;; # thistle #D8BFD8 (216,191,216)
> ;; # plum #DDA0DD (221,160,221)
> ;; # violet #EE82EE (238,130,238)
> ;; # magenta / fuchsia #FF00FF (255,0,255)
> ;; # orchid #DA70D6 (218,112,214)
> ;; # medium violet red #C71585 (199,21,133)
> ;; # pale violet red #DB7093 (219,112,147)
> ;; # deep pink #FF1493 (255,20,147)
> ;; # hot pink #FF69B4 (255,105,180)
> ;; # light pink #FFB6C1 (255,182,193)
> ;; # pink #FFC0CB (255,192,203)
> ;; # antique white #FAEBD7 (250,235,215)
> ;; # beige #F5F5DC (245,245,220)
> ;; # bisque #FFE4C4 (255,228,196)
> ;; # blanched almond #FFEBCD (255,235,205)
> ;; # wheat #F5DEB3 (245,222,179)
> ;; # corn silk #FFF8DC (255,248,220)
> ;; # lemon chiffon #FFFACD (255,250,205)
> ;; # light golden rod yellow #FAFAD2 (250,250,210)
> ;; # light yellow #FFFFE0 (255,255,224)
> ;; # saddle brown #8B4513 (139,69,19)
> ;; # sienna #A0522D (160,82,45)
> ;; # chocolate #D2691E (210,105,30)
> ;; # peru #CD853F (205,133,63)
> ;; # sandy brown #F4A460 (244,164,96)
> ;; # burly wood #DEB887 (222,184,135)
> ;; # tan #D2B48C (210,180,140)
> ;; # rosy brown #BC8F8F (188,143,143)
> ;; # moccasin #FFE4B5 (255,228,181)
> ;; # navajo white #FFDEAD (255,222,173)
> ;; # peach puff #FFDAB9 (255,218,185)
> ;; # misty rose #FFE4E1 (255,228,225)
> ;; # lavender blush #FFF0F5 (255,240,245)
> ;; # linen #FAF0E6 (250,240,230)
> ;; # old lace #FDF5E6 (253,245,230)
> ;; # papaya whip #FFEFD5 (255,239,213)
> ;; # sea shell #FFF5EE (255,245,238)
> ;; # mint cream #F5FFFA (245,255,250)
> ;; # slate gray #708090 (112,128,144)
> ;; # light slate gray #778899 (119,136,153)
> ;; # light steel blue #B0C4DE (176,196,222)
> ;; # lavender #E6E6FA (230,230,250)
> ;; # floral white #FFFAF0 (255,250,240)
> ;; # alice blue #F0F8FF (240,248,255)
> ;; # ghost white #F8F8FF (248,248,255)
> ;; # honeydew #F0FFF0 (240,255,240)
> ;; # ivory #FFFFF0 (255,255,240)
> ;; # azure #F0FFFF (240,255,255)
> ;; # snow #FFFAFA (255,250,250)
> ;; # black #000000 (0,0,0)
> ;; # dim gray / dim grey #696969 (105,105,105)
> ;; # gray / grey #808080 (128,128,128)
> ;; # dark gray / dark grey #A9A9A9 (169,169,169)
> ;; # silver #C0C0C0 (192,192,192)
> ;; # light gray / light grey #D3D3D3 (211,211,211)
> ;; # gainsboro #DCDCDC (220,220,220)
> ;; # white smoke #F5F5F5 (245,245,245)
> ;; # white #FFFFFF (255,255,255)
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: re-make-list
2020-02-11 14:30 ` re-make-list Stefan Monnier
@ 2020-02-11 16:47 ` Emanuel Berg via Users list for the GNU Emacs text editor
0 siblings, 0 replies; 13+ messages in thread
From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2020-02-11 16:47 UTC (permalink / raw)
To: help-gnu-emacs
Stefan Monnier wrote:
> I didn't realize how CPS is not just
> technically a good first step, but also at
> a more meta-level it's proved a great
> first step!
Ho ho
But no one has suggested
Standard META Language!
Added CPS to another list [1]
CPS 1975 continuation-passing style, coined in "AI Memo 349"
so thank you :)
In the Debian repos are libcps-perl!
Nothing in M/ELPA... (?)
In Emacs, how about
cps--add-binding cps--add-state
cps--advance-for cps--atomic-p
cps--define-unsupported cps--find-special-form-handler
cps--gensym cps--handle-loop-for
cps--initialize-for cps--make-atomic-state
cps--make-catch-wrapper cps--make-close-iterator-form
cps--make-condition-wrapper cps--make-dynamic-binding-wrapper
cps--make-unwind-wrapper cps--replace-variable-references
cps--special-form-p cps--trace
cps--trace-funcall cps--transform-1
cps--with-dynamic-binding cps--with-value-wrapper
cps-generate-evaluator
What IS that??? :O
[1] https://dataswamp.org/~incal/COMP-HIST
--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2020-02-11 16:47 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-10 5:11 re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 6:58 ` re-make-list tomas
2020-02-10 7:37 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 8:02 ` re-make-list tomas
2020-02-10 8:48 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 9:18 ` re-make-list tomas
2020-02-10 13:27 ` re-make-list Stefan Monnier
2020-02-10 14:04 ` re-make-list tomas
2020-02-10 19:40 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-10 23:28 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-11 3:44 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
2020-02-11 14:30 ` re-make-list Stefan Monnier
2020-02-11 16:47 ` re-make-list Emanuel Berg via Users list for the GNU Emacs text editor
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).