Hacker News new | past | comments | ask | show | jobs | submit | mfikes's comments login

Indeed, try Replete for example, in the iOS and macOS App Stores (https://replete-repl.org).

I've also had a separate commercial in the iOS App Store based on ClojureScript since 2014. (This pre-dated React Native, even, and is based on Goby.)


David and Mike, thanks for the confirmation.


It is so cool to see how far things have come since ClojureScript first worked with React Native in 2015. Krell is the best REPL for this IMHO, and it does this largely by getting out of your way. :)


Vouch Key is not tied to Apple products. It works with Android, for example.


I haven't. But I suspect that's next. If you compare things like Lumo / Planck (ClojureScript) to Babashka (GraalVM-based Clojure), you can clearly see the perf benefits of going native.

This stuff is arguably just an initial foray into the embedded world. You could imagine a Clojure dialect or compiler that emits WASM, or C, or even native code.


There is an older approximation of that, in Ferret (https://ferret-lang.org/ ), which compiles a dialect of Clojure to c++, and can be used in embedded (IIRC it does have some pretty hefty limitations, but it's very cool nonetheless).


The primary challenge is RAM. The (simplistic) approach I took with establishing a ClojureScript REPL is to have the standard library available, and that requires a lot more RAM than most Espruino boards have. Even with the ESP32, I had to make a few tweaks to Espruino in order to make more of the ESP32's RAM available.

Perhaps a more sophisticated approach could be devised involving "faulting in" ClojureScript standard library functions on demand as they are used, and by doing this use less RAM and reduce startup latency. If that were done, things would run on a broader range of chips (less RAM needed).


I bet a port to the Teensy 4 would be popular for some use cases. No wifi, but 600Mhz, gobs of RAM, and ~$20.


I thought it only had 1MB of RAM?

Might be an interesting target for Janet though!


Argh, you're right. I hadn't picked up that the WROVER boards have even more RAM.

Normally 1MB is "gobs" in the microcontroller world. The ~8MB in the WROVERs is a crazy amount of RAM for an mcu.


Indeed, the board is not required. I've added a note to the Tindie description to that effect.

I created the board for an upcoming Clojure/north 2020 talk https://clojurenorth.com/mike-fikes.html

But, your assessment is correct... the software is definitely the interesting bit (the challenges associated with getting ClojureScript to run on that hardware, with a REPL, etc.)


Additionally, the Graal team has done some great work to ensure that the JavaScript produced by ClojureScript runs quickly under Graal.js. For more details, see https://github.com/graalvm/graaljs/issues/29


Yes. There used to be an iOS app named Lisping

https://news.ycombinator.com/item?id=11658418

and you could edit text in Lisping and send it to Replete for evaluation. (The generic hooks still exist in Replete, so in theory other apps could do the same.)


Do you use Lisping and Replete together? Can Lisping using local iCloud or DropBox or etc. storage? Thanks in advance for any info.


I personally mainly use Replete for quick checks of things when AFK (seeing what a particular form might evaluate to, checking a docstring, etc.) In, short I've never really used Replete for any heavy development.

When Lisping existed (it is evidently no longer available), I was never really motivated to use it to develop code with Replete.


One advantage is that Replete requires no network connectivity to evaluate forms. The compilation and evaluation is done directly on your device.


Installing Clojure/ClojureScript on Termux would allo you to run those languages on your device. No Network connectivity required either.


Ahh, cool. TIL.


You’d need to first do

  (require ‘replete.http)
in order to load the code for that namespace.

You should be able to copy output by pressing on a history row.


Thank you. [ed: note for others - that should be a single-quote (') not a back-tick: (require 'replete.http)]

> You should be able to copy output by pressing on a history row.

Appears I can copy the historical input but not the output.

As for http/get - after the require i get a "Cleartext HTTP traffic to (...) not permitted" with a http url, and an {:error nil} with a https url...

Is there a more appropriate forum for discussing tutorial/getting started stuff? I'd like to play, but a set of (tested) koans seems to be required.


The first error might be platform security limitation and the second one looks like a bug. Please file an issue on GitHub https://github.com/replete-repl (use repo for iOS or Android app)


Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: