8 ms·
KamilaLisp – A functional, flexible and concise Lisp
- tluyben2 3y agoImpressive feature list with a book to learn the language. Featured on Arraycast: https://www.arraycast.com/episodes/episode74-kamilalisp https://www.arraycast.com/episodes/episode74-kamilalisp
- hyperbrainer 3y agoThis could actually be nice for code golf.
- mm007emko 3y agoLooks great, however it's licensed under GPL. Does it mean that ALL programs in that language have to be GPL as well?
- deleted 3y ago[deleted]
- Zambyte 3y agoNo. Edit: though I thought about it a little more. The more interesting question is regarding the standard library, rather than the compiler. Applying different licenses to the two is not unusual (gcc is GPL, glibc is LGPL). From what I can see, the standard library is embedded entirely into the compiler, and thus yeah, I do think programs that use this would actually have to be GPL. Not that that's a bad thing though :)
- Tomte 3y agoMore important than the standard library (which isn‘t so standard, just conventional, see musl) is the GCC Runtime Library, which is GPLv3, but with the "GCC Runtime Library Exception". There is also an interesting question about license compatibility between GPLv3 and GPLv3 with RLE, but that is mostly ignored by everybody.
- tagfowufe 3y ago[flagged]
- tut-urut-utut 3y agoOnly low effort answers are worse than low effort questions, mine included.
- Capricorn2481 3y agoBeg to differ. Maybe you can decipher all this license stuff but I can't and I'm sure OP was asking people who are more savvy about it to get an answer, not to be lectured.
- tagfowufe 3y agohttps://duckduckgo.com/?q=open+source+licenses&ia=web https://duckduckgo.com/?q=open+source+licenses&ia=web The FIRST result: https://opensource.org/licenses https://opensource.org/licenses You're on HN, act like it
- Capricorn2481 3y agoI don't understand the legal speak on these pages. What does your comment mean? That I'm supposed to reach a certain level of understanding of open source terms to be allowed on here? Sounds extremely narrow minded Also why did you leave two replies?
- tagfowufe 3y agoNo, that you are supposed to have a basic level of autonomy and attempt at understanding before using a forum as your own personal search engine
- Capricorn2481 3y agoI told you I have read the terms of these things and don't understand them. You have like 5 comments on here and you're lecturing people on the culture of HN. This is why your comment was flagged. Get over yourself
- anthk 3y agoNo. If you are a GCC user, you should know that.
- kazinator 3y agoUnless KamilaLisp specifies exceptions to the GPL, it means that if you ship your own KamilaLisp program in a way that is combined with KamilaLisp (for instance compiled into one big executable that includes the KamilaLisp run-time) then the entire combination has to be distributed under the GPL, meaning that your program has have a GPL-compatible open source license. Programs that are not combined with KamilaLisp, only requiring an installation of KamilaLisp for their execution, almost certainly don't have to be GPLed.
- hislaziness 3y agoInspired by MalbolgeLISP which was a lisp written in Malbolge.
- anonzzzies 3y agoAre they related? I mean same author, but they seem not related besides the Lisp part. Both are pretty impressive feats for someone who is only 19 though.
- ergonaught 3y ago"KamilaLisp, the language described in the book, originates from its previous iterations - v0.1 and MalbolgeLISP."
- anonzzzies 3y agoAh! I stand corrected, thanks. I opened the github and saw APL, Haskell, Lisp. Interesting as this new effort looks pretty serious while the Malbolge, while an incredible feat, is more a joke I guess.
- jonahx 3y agoReally impressive for any age. Quotes about Malbolge: "The day that someone writes, in Malbolge, a program that simply copies its input to it's output, is the day my hair spontaneously turns green. It's the day that elephants are purple and camels fly, and a cow can fit through a needle's eye." "There's a discussion about whether one can implement sensible loops in Malbolge—it took many years before the first non-terminating one was introduced. A correct 99 Bottles of Beer program, which deals with non-trivial loops and conditions, was not announced for seven years; the first correct one was by Hisashi Iizawa in 2005."
- trymas 3y agoI thought I have seen this name… malbolge-lisp: https://github.com/kspalaiologos/malbolge-lisp https://github.com/kspalaiologos/malbolge-lisp HN discussion: https://news.ycombinator.com/item?id=28048072 https://news.ycombinator.com/item?id=28048072 She’s a genius prodigy.
- oumua_don17 3y ago>> genius prodigy https://palaiologos.rocks/about/ https://palaiologos.rocks/about/
- precompute 3y agoMy eyes are saucers.
- bjoli 3y agoDon't forget bzip3.
- lifthrasiir 3y agoEncode.su discussion on bzip3 [1] was quite interesting to me back then. Tl;dr, she combined some unpopular ideas into one package but those ideas themselves were well known in the data compression folks themselves, so that was hardly novel to them. Nor those ideas were independently reimplemented or optimized. [1] https://encode.su/threads/3867-BZip3 https://encode.su/threads/3867-BZip3
- dang 3y agoThanks! Macroexpanded: A lightweight Lisp interpreter in Malbolge - https://news.ycombinator.com/item?id=38850961 https://news.ycombinator.com/item?id=38850961 - Jan 2024 (20 comments) Lisp in an “impossible” language, the most complex Malbolge program to date - https://news.ycombinator.com/item?id=28048072 https://news.ycombinator.com/item?id=28048072 - Aug 2021 (73 comments)
- karmakaze 3y agoIt would be helpful if the Features were separated by language vs library. I don't know what to make of No memory side effects, all collections are persistent. This can't be relevant when the objects referenced by these collections are mutable.
- deleted 3y ago[deleted]
- kazinator 3y ago> separated by language vs library You're totally new to Lisp, right? There is no such clear boundary in Lisp languages. > This can't be relevant when the objects referenced by these collections are mutable. Why not? Explain your reasoning. E.g. why is not not relevant that we can make a longer list by adding an element to the front of a shorter list, without mutating that shorter list, if the elements are objects that support mutation?
- karmakaze 3y agoHow so? Tail-call optimization would be a language feature. The math/graph operations in a lib/module etc. An example would be if presence in a collection is dependent on mutable properties of its entries.
- Kamq 3y ago> Tail-call optimization would be a language feature. Most lisps generally do it this way (except maybe emacs lisp?), but there's not really a requirement for it to be a language feature. TCO is really just AST manipulation, and lisp macros are more than capable of that, although you might want to hook into the reader as well if Kamila supports it (I didn't see anything about that in the github readme).
- James_K 3y ago> TCO is really just AST manipulation While it is true that tail call relationships can always be represented using goto, it requires that all related code is known to make this conversion. For instance: (defun f (x) (a x) (g x)) (defun g (x) (b x) (h x)) (defun h (x) (c x) (f x)) You cannot remove the tail call by altering the AST of F, G, or H. Instead, a third function must be instroduced that contains the bodies of all functions in the loop. (defun fgh-loop (start-at x) (tagbody (case start-at ((f) (go f)) ((g) (go g)) ((h) (go h))) f (a x) (go g) g (b x) (go h) h (c x) (go f))) (defun f (x) (fgh-loop 'f x)) (defun g (x) (fgh-loop 'g x)) (defun h (x) (fgh-loop 'h x)) You can only apply such optimisations in retrospect, but a macro would only have access to the body of F at the point of definition for F. And even then, you cannot TCO any lambdas that are passed around. A simple example is the Y combinator: ((lambda (x) (x x)) (lambda (x) (x x)))
- anthk 3y agoCheck out stutter from the Computational Beauty of Nature too: https://github.com/gwf/CBofN https://github.com/gwf/CBofN cat data/demo.lisp | ./bin/stutter Have a look on the file on how integers and aritmetics are implemented. The books explains that, but is not free. But you can get it somewhere else.
- bloopernova 3y agoSlightly related question: Do any editors have a "translator" kind of tooltip or panel that explains what each symbol does in languages like APL or KamilaLisp? I was thinking about how I'd go about learning the various symbols involved in such a language, and I learn best by reading and modifying existing code, so something that helps me understand what I'm looking at would be nice.
- shrubble 3y agoAlthough Dyalog APL is slightly different from other APLs, their editor does have exactly that in their REPL; it is a good way to learn the basics.
- mlochbaum 3y agoLanguage-specific web editors often do. I think Uiua (https://www.uiua.org/ https://www.uiua.org/) is the state of the art here, with the minor issue that most of the symbols aren't used in any other language. Several APL-likes have language bars at the top, with names shown on hover. - Dyalog APL: https://tryapl.org/ https://tryapl.org/ - Kap: https://kapdemo.dhsdevelopments.com/clientweb2/ https://kapdemo.dhsdevelopments.com/clientweb2/ - ngn/apl: https://abrudz.github.io/ngn-apl/web/ https://abrudz.github.io/ngn-apl/web/ - BQN (my language): https://bqn.funmaker.moe/ https://bqn.funmaker.moe/
- abrudz 3y agoDyalog APL's RIDE interface doesn't even need you to find the symbol on a language bar; just hover the mouse over it, and a tooltip appears: https://i.imgur.com/XtzRGUs.png https://i.imgur.com/XtzRGUs.png
- lispm 3y agoThe KamilaLisp repository contains a version of ABCL (Armed Bear Common Lisp for Java) and of Fricas (a computer algebra system written in CL). What are those used for?
- James_K 3y ago> 0.3.x.y where a bump of x signifies a breaking change, while the bump of y signifies a non-breaking change If only regular version numbers had some way to encode this relationship.
- shrubble 3y agoThis is the second Lisp, in addition to APRIL, which combines Lisp concepts with APL concepts. Wonder if that is going to be a trend in the future?
- dang 3y agoRelated: April, a compiler from APL to Common Lisp, releases version 1.0 - https://news.ycombinator.com/item?id=30192096 https://news.ycombinator.com/item?id=30192096 - Feb 2022 (3 comments) April, an APL Compiler for Common Lisp [video] - https://news.ycombinator.com/item?id=24434717 https://news.ycombinator.com/item?id=24434717 - Sept 2020 (23 comments) April: An APL That Compiles to Common Lisp - https://news.ycombinator.com/item?id=22225136 https://news.ycombinator.com/item?id=22225136 - Feb 2020 (11 comments)
- behnamoh 3y agoI said this in another thread too, but the problem with Lisp is that it's sorta bundled with Emacs, so if you want to use LISP's powerful REPL you really have no choice other than learning Emacs. Essentially, Lisp is not just a "language"; it's a whole system designed to explore programming ideas. It includes the IDE, the minimal syntax, REPL, compiler, etc. All of this together makes "Lisp" the powerful and enlightening tool that people talk about. I think the other "inconveniences" of Lisp could be more tolerable for beginners if learning the language didn't require learning a new IDE (or OS, depending on how you define Emacs!). But at that point you'd have to forego a major benefit of using Lisp (its REPL); you'd be back to writing "dead" programs, not image-based "live" ones. Another problem I've faced with Lisp is lack of good documentation (except for Racket, but then again, Racket doesn't have Common Lisp's powerful REPL). Every website that teaches Lisp is in ugly HTML+CSS-only style, compare that to the more user-friendly websites of other languages. Then there's the issue of up-to-date learning material. Aside from the fact that there are very few resources to learn Lisp, the ones that are available are too old too. "Practical Common Lisp" (2005), "Common Lisp Recipes" (2015), "ANSI Common Lisp" (1995), etc. I like the philosophy of (s-exp) but modern lisps have ruined its simplicity for me by introducing additional bracket notations [like this]. It's confusing for me as a beginner to distinguish between (this) and [that], and honestly goes against the whole idea of "code and data look the same" motto.
- jabradoodle 3y agoWhile I use emacs and I'm not too familiar with other editors I'd question how true this is today, clojure in particular is often written with vscode, intelij and vim, all seem to have good repl support.
- gumby 3y ago> I said this in another thread too, but the problem with Lisp is that it's sorta bundled with Emacs, so if you want to use LISP's powerful REPL you really have no choice other than learning Emacs. You can use Medley which is Interlisp-D, a different, parallel strain of Lisp, a descendent of MACLISP, itself an ur-lisp ancestor of Interlisp, emacs lisp (older than EMACS, which didn’t start out as a lisp program at all), CommonLisp, Multics MACLISP and that even begat Scheme. Interlisp didn’t even keep its code as text files (though I wrote an eMacs for it at PARC back in the early 80s) so you may find it more accessible.
- deleted 3y ago[deleted]