Re: [stack] FL versus Joy
John Nowak <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
And just to really waste everyone's time... Here's the same reduction in my proposed FL variant. Here, all terms denote functions, parentheses are quotation, square brackets are construction, and juxtaposition is composition. PRIMITIVES: i [(F), X] = F X hd [A, B] = A USER-DEFINED: dup = [id, id] square = mul dup double = add dup twice = i [hd, i] EVALUATE: double twice [(square), id] 5 double twice [(square) 5, id 5] double twice [(square), id 5] double twice [(square), 5] double i [hd, i] [(square), 5] double i [hd [(square), 5], i [(square), 5]] double i [(square), square 5] double i [(square), mul dup 5] double i [(square), mul [id, id] 5] double i [(square), mul [id 5, id 5]] double i [(square), mul [5, id 5]] double i [(square), mul [5, 5]] double i [(square), 25] double (square) 25 double mul dup 25 double mul [id, id] 25 double mul [id 25 , id 25] double mul [25 , id 25] double mul [25 , 25] double 625 add dup 625 add [id, id] 625 add [id 625, id 625] add [625, id 625] add [625, 625] 1250 Very straightforward, if a little long because I was very explicit. Here's the same thing removing some of the trivial steps involving construction: double twice [(square), id] 5 double twice [(square), 5] double i [hd, i] [(square), 5] double i [(square), i [(square), 5]] double i [(square), square 5] double i [(square), mul dup 5] double i [(square), mul [id, id] 5] double i [(square), mul [5, 5]] double i [(square), 25] double square 25 double mul [id, id] 25 double mul [25, 25] double 625 add dup 625 add [id, id] 625 add [625, 625] 1250 Definitely a lot nicer than FL I think. One thing you'd want is a syntax for '[(F), id]', probably ':(F)' or something along those lines. 'twice:(square)' is better than 'twice [(square), id]'. Of course, other options exist. - John