(aside from Haskell and Scheme themselves, of course)
Those PureScript records tho...
And in any rnrs complient Scheme, it's fairly trivial to make a strict functional dialect. And in Guile or Racket, it's even easier.
Unfortunately, Guix doesn't do this. Which meant Guix can't guarantee referential transparency. Although if the packager is an ANY WAY competant, it will be maintained.
No, it's not. It's a cut-down Scheme: Most of your scheme knowledge would apply directly, or indirectly.
Besides, even if it was a different language, it's a pre-existing one: DSSSL is pretty much this.
>If you're learning a new language, a new syntax isn't very hard.
Yes, but for me, the choice is learning a new language that has no other applications, save package managment, and using a subset of a language I already know.
>And there's not a terrible amount of people who think S-expressions are an inherently good syntax
I said from my perspective. I'm a schemer, so I'm already on board with sexprs.
Only if you regularly write code using purely functional scheme in the first place. The difficulty of writing in a new language is very rarely figuring out what function calls to make, at least for me - it's about thinking in terms of the language.
'((extensible-records . being-key-value-maps?))
Alists are fast enough for this, and they ARE k/v maps. And support for them is in rnrs. '(this is a list)
'((this . is) (an . alist))
Looks pretty distinct to me. '((this . is) (a . list) (of . cons))
'((this . is) (an . alist))
Hey look, my list of cons looks incredibly like an alist... funny that.and alist is a list of pairs. That's what it is. Semantically, there isn't really another reason to use the format.
They don't handle functions or infinite datastructures though.