Email or username:

Password:

Forgot your password?
Devine Lu Linvega

Replacing every single-use label for a lambda, things look so much neater(as far as an assembly language can be neat).

22 comments
Nico Nico Belić

@neauoire what are those extra non-ASCII characters?

Devine Lu Linvega

@a13cui Oh, right, the full arrow is JMI(!), and the empty arrow is JCI(?), pointers literals are the little boxes

Devine Lu Linvega

@a13cui they're special characters to help readability, the runes are too much eye strain for me.

Nico Nico Belić

@neauoire what would it look like without these characters?

Bjornsdottirs

@neauoire what is this

is this a screenshot from your lisp machine

Devine Lu Linvega

@ellenor2000 It's not a lisp machine, it's just a two-stacks machine. That's a text editor written in the language that you're looking at now, viewing the source code of the assembler that assembles that language, also written in that language.

wiki.xxiivv.com/site/uxntal.ht

Devine Lu Linvega

Porting projects to making use of lambdas, the ability to nest them is really nice.

In screenshot, left is button handling with lambdas, right is without where each state has to have a unique label.

Nico Nico Belić

@neauoire I have no clue how you manage to make Uxn look so pretty, but you're definitely the best ambassador I know

Devine Lu Linvega

@a13cui Haha, thanks. I'm glad you think they're pretty. I think because varvara enforces a kind of grid, it gives everything a certain look

gvv

@neauoire they both say left, which one is right 🤪

tbsp

@neauoire This example of uxntal lambdas is the first one that really clicked for me. 😅

Devine Lu Linvega

@tbsp I've tried writing a bit of documentation here: wiki.xxiivv.com/site/uxntal_la

Do you think it's understandable?

tbsp

@neauoire I see you've expanded it a bit since I read it last. There are still bits that go over my head, but it's clearer now.
Are lambda blocks preceded by immediate runes treated differently by the assembler than those without? The JCI case seems to insert the jump offset following the immediate opcode, whereas it sounds like the others use an immediate jump as well as push the start pointer to the return stack.

Devine Lu Linvega

@tbsp The way it works behind the scene is interpreting a single { as a JSI looking for a closing label called "lambdaXX". You can use runes with it like any other label, it's dynamically looking for its closing bracket. So you could do ={ }, -{ }, !{ }, etc..

C: git.sr.ht/~rabbits/uxn/tree/ma
tal: git.sr.ht/~rabbits/drifblim/tr

Go Up