Parsing Lisp Code in Snap!

Hahaha, Jens, I love you. This is your equivalent to my saying all you need is lambda. :~)

SICP in Snap! is definitely on my to-do list! But I was expecting to just hand-translate the examples.

Programming languages are nothing without their lambdas :smiley:

Yes! Please!! I can't wait!!! :3

That's really smart!


This very nearly works. I just need to change the for out for an until.
(Edit: it doesn't work, but I have no idea why.
libLisp script pic
)

The reason it's not reporting is that there's no REPORT in PARSE! :~P

But you're cheating by using a test case in which there's only one level of recursion and also there's nothing after the subexpression. Try this:

(+ (* 1 (- 5 2) (/ 1 9)) 7)

Ah, man! I'll try to figure out what's wrong with my logic.
libLisp script pic

I’m missing the joke (if it is one?)

In my experience, and I’m sure many others (e.g. @callietastrophic) will agree, Scheme (or LISP) as used in SICP, is much harder to read than Snap! (isn’t that one of the reasons why Snap! was developed un the first place?). Translating SICP’s examples to Snap! will help us mudbloods learn sorcery, and become wizards, too.

Yeah, I hope so. But I'm not allowed to think about that until the manual is ready. :~(

Did you read what I wrote about keeping track of where you're up to in the input? You don't have to do it my way, but you have to do it some way.

I'm sorry. I didn't see your post above.

I'll never forgive you. :~P

:)​

Okay. I'm working through the logic let's see what I can do.

I was trying to do more research on the subject of generating Abstract Syntax Trees, and this came up:
image
(Bing search at its finest.)

Yay! :~D

I fully agree with your priority! Even so “thinking about”, and discussing / guiding it ≠ doing it yourself. Apparently both @jens and @bluebaritone21 have already been working on building blocks, literally.

In my experience, and I’m sure many others will agree, Scheme (or LISP) as used in SICP, is much harder to read than Snap*!* (isn’t that one of the reasons why Snap*!* was developed un the first place?). Translating SICP’s examples to Snap*!* will help us mudbloods learn sorcery, and become wizards, too.

Essentially. I've been trying to teach myself this in some shape for form for decades, level editors, text editors, IDE's you name it. The general rule is, to get better at code, read others code to see what they did and then experiment with that code, but for ME? I see heiroglyphs and mystic runes.

Snap! I have the opposite issue, I get it fairly easily, but because of it's nature, it's constraints behind javascript mean it's limited to the browser.

So as much as I would love to build SICP's meta-circular evaluator and it's interpreter and it's compiler? Especially it's compiler? Scheme isn't quite Snap! and thus, I can't quite make the leap necessary. I'd love, love love to put Quake in a Snap powered meta-circular evaluator and watch it move. I'd adore it so much, but for now? I'm just ranting to the void (These forums, my sympathies)

My other major issue is all the leading text books are over thirty years old or close to it.

SICP's most recent edition was wasted on javascript and should have been written for snap!

My teacher-impostor mind protests and points out that a) this "code" is reinforcing the wrong idea about text being somehow more "real", and that folks are going to love it way too much (for all the wrong reasons, including "transpiling" SICP examples, haha!). Also I hate that it reinforces English as the seemingly "underlying" language.

For me? I think it'll have the opposite actual effect. When snap becomes mainstream, the text languages will vanish, like they should have done thirty years ago. Maybe I'm wrong? (Highly likely) but the visual representative nature of Snap! or Scratch gets far more across.

I keep citing games, because I'm a gamer, but there's a reason UX is a huge design consideration in games now because there's so much information to present, that visual short hands achieve more than text or narration does. (There's "debate" about that, but that's a whole other can of worms)

I also kind of want to post a screenshot of a game I'm playing, at the moment, showing one of my favourite things in the series, the way it presents weapon data, but even though I turned the gore off, it's not a kids game and this is a kids forum. When I first read about Meta-circular evaluators, my first automatic comparison was to Borderlands weapons cards.

I doubt it's the same thing, I'm figuring it's just a csv list in a visual style, but it looks cool

Yeah, I hope so. But I'm not allowed to think about that until the manual is ready. :~(

To be fair if I wasn't getting stuck in the mire, I'd be doing a lot of this myself instead of whining in the forums.

It doesn't quite help with my research, though. All the other website listings where just about recursion. I thought it was funny that the first result was this topic.


On another note, I have a friend in real life that works on text language interpreters for a living. He suggested that I read Crafting Interpreters. So, I'm going to try it (implementing the code in Snap!, of course :)​ )

"Most recent edition" is misleading. Abelson and Sussman had nothing to do with that effort apart from giving it their blessing. You can't really tell third parties what their preferred language should be! :~)

And also, they had good reasons for their choice. SICP is basically dead in the CS education world because teachers don't want to teach Scheme. They could have chosen Python, which would probably have been even more popular, but Python has a broken lambda; JS is much closer to Scheme. (In fact, the original plan for browsers was that it would be Scheme, but the management chickened out and insisted on a syntax that Real Programmers™ would find familiar.)

How is Python's lambda broken?

you use Bing too? I also use bing as my main search engine because i use windows.

I would use DuckDuckGo, but my school district blocked it for no good reason.