|
SRFI 197: Threading Macros
Arthur A. Gleckler
(09 Jun 2020 03:41 UTC)
|
|
First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 06:48 UTC)
|
|
Re: First comments
Linus Björnstam
(09 Jun 2020 07:27 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 08:30 UTC)
|
|
Re: First comments
Adam Nelson
(09 Jun 2020 13:25 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 14:06 UTC)
|
|
Re: First comments
Lassi Kortela
(09 Jun 2020 14:12 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 15:28 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 16:05 UTC)
|
|
Re: First comments
Adam Nelson
(09 Jun 2020 16:15 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 16:22 UTC)
|
|
Re: First comments
Arne Babenhauserheide
(09 Jun 2020 17:03 UTC)
|
|
Re: First comments
Adam Nelson
(09 Jun 2020 17:16 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 17:22 UTC)
|
|
Re: First comments
Lassi Kortela
(09 Jun 2020 17:31 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 17:40 UTC)
|
|
Re: First comments
Arne Babenhauserheide
(09 Jun 2020 22:19 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(10 Jun 2020 06:16 UTC)
|
|
Re: First comments
Linus Björnstam
(10 Jun 2020 07:17 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(10 Jun 2020 07:38 UTC)
|
|
Re: First comments
Linus Björnstam
(10 Jun 2020 08:21 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(10 Jun 2020 08:42 UTC)
|
|
Re: First comments
Linus Björnstam
(15 Jun 2020 19:50 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(15 Jun 2020 20:09 UTC)
|
|
Re: First comments
Linus Björnstam
(16 Jun 2020 11:39 UTC)
|
|
Re: First comments
Arne Babenhauserheide
(10 Jun 2020 07:53 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(10 Jun 2020 08:04 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 17:44 UTC)
|
|
Re: First comments
Adam Nelson
(09 Jun 2020 17:46 UTC)
|
|
Re: First comments
Marc Nieper-Wißkirchen
(09 Jun 2020 17:49 UTC)
|
|
Re: First comments
Arvydas Silanskas
(09 Jun 2020 07:40 UTC)
|
|
Named procedure; RE: SRFI 197: Threading Macros
Arne Babenhauserheide
(09 Jun 2020 13:40 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Adam Nelson
(09 Jun 2020 13:48 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Marc Nieper-Wißkirchen
(09 Jun 2020 14:09 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
hga@xxxxxx
(09 Jun 2020 14:16 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Lassi Kortela
(09 Jun 2020 14:42 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Marc Nieper-Wißkirchen
(09 Jun 2020 14:48 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
hga@xxxxxx
(09 Jun 2020 15:10 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Marc Nieper-Wißkirchen
(09 Jun 2020 15:25 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Arne Babenhauserheide
(09 Jun 2020 15:47 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Marc Nieper-Wißkirchen
(09 Jun 2020 15:58 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Adam Nelson
(09 Jun 2020 16:21 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros Marc Nieper-Wißkirchen (09 Jun 2020 16:46 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Adam Nelson
(09 Jun 2020 17:13 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Marc Nieper-Wißkirchen
(09 Jun 2020 17:35 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
John Cowan
(11 Jun 2020 00:59 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
hga@xxxxxx
(09 Jun 2020 16:58 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Lassi Kortela
(09 Jun 2020 17:00 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Arne Babenhauserheide
(09 Jun 2020 17:00 UTC)
|
|
Re: Named procedure; RE: SRFI 197: Threading Macros
Marc Nieper-Wißkirchen
(09 Jun 2020 15:17 UTC)
|
|
Usecase: chaining operations after "optionals"
Arne Babenhauserheide
(09 Jun 2020 17:18 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Adam Nelson
(09 Jun 2020 17:24 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Marc Nieper-Wißkirchen
(09 Jun 2020 17:48 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Adam Nelson
(09 Jun 2020 17:55 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Marc Nieper-Wißkirchen
(09 Jun 2020 19:11 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Arne Babenhauserheide
(09 Jun 2020 22:08 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Marc Nieper-Wißkirchen
(10 Jun 2020 06:11 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Arne Babenhauserheide
(10 Jun 2020 08:03 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Marc Nieper-Wißkirchen
(10 Jun 2020 08:10 UTC)
|
|
Association list utilities
Lassi Kortela
(10 Jun 2020 08:24 UTC)
|
|
Re: Association list utilities
Marc Nieper-Wißkirchen
(10 Jun 2020 08:30 UTC)
|
|
Re: Association list utilities
Lassi Kortela
(10 Jun 2020 08:49 UTC)
|
|
Re: Association list utilities
Marc Nieper-Wißkirchen
(10 Jun 2020 09:29 UTC)
|
|
Re: Association list utilities
Lassi Kortela
(10 Jun 2020 09:59 UTC)
|
|
Re: Association list utilities
Marc Nieper-Wißkirchen
(10 Jun 2020 10:09 UTC)
|
|
Re: Association list utilities
Lassi Kortela
(10 Jun 2020 10:37 UTC)
|
|
Re: Association list utilities
Arne Babenhauserheide
(10 Jun 2020 10:33 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Arne Babenhauserheide
(10 Jun 2020 09:16 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Marc Nieper-Wißkirchen
(10 Jun 2020 09:19 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Lassi Kortela
(10 Jun 2020 09:29 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Marc Nieper-Wißkirchen
(10 Jun 2020 09:42 UTC)
|
|
More on association lists (and other key-value collections)
Lassi Kortela
(10 Jun 2020 10:16 UTC)
|
|
Re: More on association lists (and other key-value collections)
Marc Nieper-Wißkirchen
(10 Jun 2020 10:42 UTC)
|
|
Re: More on association lists (and other key-value collections)
Arne Babenhauserheide
(11 Jun 2020 00:41 UTC)
|
|
Re: More on association lists (and other key-value collections)
Marc Nieper-Wißkirchen
(11 Jun 2020 10:07 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Arne Babenhauserheide
(10 Jun 2020 10:28 UTC)
|
|
Re: Usecase: chaining operations after "optionals"
Marc Nieper-Wißkirchen
(10 Jun 2020 10:32 UTC)
|
Am Di., 9. Juni 2020 um 18:21 Uhr schrieb Adam Nelson <xxxxxx@nels.onl>:
> I'm wary of explicitly connecting this SRFI to monads in any way. Monads
> are a difficult concept for new functional programmers, are not a core
> part of Scheme, and can be difficult to use in a dynamically-typed language.
The trivial monad (underlying SRFI 197) is a trivial concept. ;)
Joking aside, I am not so sure whether the phrase "are not a core part
of Scheme" makes as much sense as it seems to make. As being said,
monads are a concept as is the concept of a group or a ring. Certain
patterns just fulfill the axioms of a monad or a ring.
Apart from a side remark (which will help those who know monads), I
would neither make the connection explicit. But it makes sense to have
a syntax that can be easily copied over to the many non-trivial monads
we have already defined or will be defining.
(What do you mean by "difficult to use in a dynamically-typed
language"? That is an orthogonal concept, isn't it?)
> Requiring `cut` also seems like too much. Like the `let*` proposal, it
> makes short pipelines longer and more confusing than they would have
> been as simple nested expressions.
Longer yes; the `let*' may or may not be more confusing (depending on
whether you know `and-let*' or not); but the explicit use of `cut'
would definitely make it more, err, explicit and, thus, easier to
understand.
> What needs to be kept in mind here is that the sole purpose of threading
> macros is brevity and readability. If this SRFI is defined in a way that
> sacrifices either of those, there will be no reason to use it, because
> writing expressions plainly, without the threading operator, will always
> be clearer.
That's certainly a good point although there is some area of tension
between brevity and readability and generally depends on a number of
parameters and one's palate.
(let* ((<- xs)
(<- (map (lambda (x) (+ x 1)) <-)
(<- (filter odd? <-)
(<- (fold * 1 <-))
<-)
is no less pretty! (Although a `let*' syntax that allows an empty body
and whose value is then the value of the last bound variable would be
even better. Maybe, we should propose this extension for R7RS-large
because `and-let*' already allows this. Someone should make a SRFI for
this!!!)
And the fact, that `->' maps in syntax and semantics so easily to
`let*' lets us explain `->' in Scheme terms.
> With that said, I am open to a different name for the default operator.
> Right now I'm torn between `seq`, `pipe`, `chain`, and `=>`. I'm also
> seriously considering removing the `->`/`->>` distinction and making
> `->>` the default when no `<>` is present, since the most prominent use
> case for this operator (chained list/vector transformations) passes the
> chained argument in the last position.
That sounds helpful.