
Rackjure - tosh
http://docs.racket-lang.org/rackjure/index.html
======
Touche
I guess I'm alone on this, but I want as little special syntax as possible,
it's the primary thing I like about Scheme. ' ` , # <\- that's enough, let's
stop there. Everything else should be in an s-expression.

~~~
drb91
Well, I suggest not using anything but scheme.

~~~
AlexCoventry
Downvoted for facile snark.

------
kencausey
In my opinion one of the primary characteristics of Clojure is the
implementation of the collection types. Without that it's not going to be an
implementation of Clojure to me.

~~~
AlexCoventry
This got me curious about whether persistent data structures are available in
Racket. It seems like they are.

[https://docs.racket-lang.org/functional-data-
structures/inde...](https://docs.racket-lang.org/functional-data-
structures/index.html)

~~~
FPGAhacker
Being fundamental to clojure means everyone uses those data structures. That
matters quite a lot when you aren't writing everything from scratch.

------
kovrik
Shameless plug: I'm writing similar thing as a hobby sandbox project:
[https://github.com/kovrik/scheme-in-kotlin](https://github.com/kovrik/scheme-
in-kotlin)

It started as a Scheme R5RS implementation in Java, then I translated
everything to Kotlin. Finally, decided to make it a hybrid (abomination?) of
Scheme and Racket and Clojure.

Still in development, don't know how to implement macros properly. Also, it's
only an interpreter for now, there is no compiler (for the same reason: don't
know yet how to write a compiler for Kotlin. Use ASM?)

Anyway, it is a great and enlightening experience and I would recommend
everyone to write your own lang.

------
sbjs
Why are there two variations for ~> and ~>> ? It looks like it limits you to
using only functions that take parameters in the same position.

Why not have one position-independent version? Something where you can specify
at every level which position you want to use, like this:

    
    
        (~>>> #"foobar"
              (~> bytes-length)
              (~>> number->string 16)
              (~> string->bytes/utf-8))
    

But that still only limits you to first and last position. Why not use a
positional special form like JavaScript has with __dirname called __var?

    
    
        (~>>> #"foobar"
              (__var bytes-length)
              (number->string 16 __var)
              (__var string->bytes/utf-8))
    

This way you can use it no matter what functions you want. But I don't write
my code in Racket so maybe this is already a solved problem.

~~~
robto
In clojure, you can do this with as->, but there are reasons to be careful.
Stuart Sierra has a great (brief) article about it[0]. The long and short of
it is that it's really easy to change the "type" of an expression as it goes
through your pipeline in unintuitive ways. This can cause surprises later down
the line, so it's probably better to refactor the functions you are calling so
that they play nicely with thread-first or with thread-last.

[0][https://stuartsierra.com/2018/07/15/clojure-donts-thread-
as](https://stuartsierra.com/2018/07/15/clojure-donts-thread-as)

~~~
vijaykiran
Did you mean Stuart Sierra? :-)

~~~
robto
Whoops! Clojure is the only community I know with a confusion of Stuarts.

------
rlglwx
I would have called it Clacket. Cool project nonetheless.

~~~
PinkMilkshake
Portmanteaus for naming new technology should be banned :P

~~~
DonaldPShimoda
> portechteaus

FTFY

------
leanthonyrn
Would love to see an Arcket.

~~~
ruricolist
I think you can use Anarki in exactly that way:

[https://github.com/arclanguage/anarki#racket-
interop](https://github.com/arclanguage/anarki#racket-interop)

