Conversation
Notices
-
lol paying for music
-
@nik webdev aesthetic
-
@nik youbut mmm, solarised, fish, node
-
@shmibs what is?
-
@nik @shmibsthe shell I'm working on (on the spec atm)cni is (in part) a practice project for parsing ™️
-
@nik @shmibsfish: that'll change once cofesh comes out :^)
-
@toast @shmibs wat is that
-
@shmibs node: not my project, just running someone's codesolarised: that's not solarised!! it's my own theme i made with some colors from the OG material design palettefish: ok you got me there
-
@nik close enough colours ????still never run a node thing here before, though, except i guess that keybase thing briefly? sort of different culture, the things people use it to write, feels
-
@toast @alexandria @nik implementation lang?
-
@alexandria @nik @shmibs you're welcome to help out if you're interested (warning: progress is going to be extremely slow because I'm a broken human being and both Gabe and I have full-time jobs)
-
@toast @nik @shmibs (but no yeah that does sound cool!)
-
@alexandria @nik @shmibsanyway yeahthe design goal is to bring the shell into its full legacy:be as fully functional as a stringly-typed lisp with barewords can bewithout sacrificing *any* of the UX (and in fact making it better, I've learned a lot about shell UX in my years of writing scripts and maintaining a zsh framework)and then making it an embeddedable language by default (i.e you embed it into your application, like you might with lua, with the main shell interpretor (cfsh(1)) just being an example use-case)
-
@toast @nik @shmibs Yeah, I mean /I guess/, I don't have to like it though!! :D Sidenote, idk if yall know about c2 wiki but there's genuinely interesting discussion on this topic there:https://wiki.c2.com/?EmExpressionshttps://wiki.c2.com/?HigherOrderFunctionhttps://wiki.c2.com/?StringlyTyped:)
-
@alexandria @nik @shmibs I would say that in order to have eval == first class functions the language has to be stringly typed ... which, well
-
@toast @nik @shmibs Yeah, but that's the same for most languages and I don't think we could argue that (insert language here) has first class functions just because it has eval?Although, it's literally been 2 years since I was reading and doing language stuff on a serious level so, 99% of what I say is half-remembered lol
-
@alexandria @nik @shmibsthe general approach for HOF in shells is to print out a quoted string and eval it I actually did a demo of that the other day
-
@alexandria @nik @shmibsI mean, shell is effectively doing string separation into lists (of strings), and that's how you achieve quoted types - and that is exactly how things are stored as well As for lists and maps, this is something that will be addressed in cofesh (first class lists, including passing them to functions, same for maps, and the ability to have a quoted type to define them for reverse operation)
-
@toast @nik @shmibs Ah, yes I'd forgotten that shell requires first class functions (and schemes continuations and closures, too).I've... actually never tested... if bash/sh/mksh has first class functions...
-
@toast @nik @shmibs The shell isn't homoiconic, is stringly typed, and goes out of it's way to avoid you from operating on list-like datastructures (arrays)Seems like a pretty far call from saying it's a lisp? I mean you could argue that it's string separation parsing are *kind of like lists* but that's a weak argument imo.Also, worth noting that Lisp was originally designed to use M-Expressions, which are kind of like like normal programming syntax, they never caught on, though. So S-Expressions aren't necessary, but the homoiconicity between the language's data structures and the actual internal representation *is* because that's 90% of what sets a lisp apart from everything else.
-
@nik @shmibsno, this is actually wrong and shows their lack of knowledgeshell is *already* a lispsure, it doesn't have s-expressions (it uses barewords) and it only has the one data typebut it has quoted types, real eval and continuationsso this isn't that, this is more "build a shell the way you would build a lisp - because it is one - and then add sugar on top"
-
@toast @shmibs >are you ready for lisp the shell?quote from my ex's/friend's project: "combine the functionality of a Lisp with the convenience of the UNIX shell." lol
-
@toast @shmibs ah youre going through the shell writing phasei think everyone i know with an interest in parsers went through it
-
@nik @shmibsI don't care about parsers (Gabe does), but I sure do care about shelland since I can't compile zsh statically, I figured I'll one-up them :^)are you ready for lisp the shell?