User loginNavigation |
The Problem with "dup" and "swap" in Stack-Based LanguagesOperations like "dup" and "swap" in stack-based languages are special in that they return multiple results (unlike most other languages which simulate multiple results by returning tuples). I find expressing the concept in a type system challenging (if anyone else has done it successfully I would definitely like to hear about it). One of the core problems is that the type of a function like eval, which is supposed to execute any function: eval : (a (a -> b) -> b) This makes a lot of sense when a function only has one argument and one result. I can reduce every function to an equivalent one having one argument: (a b -> c) = (a -> b -> c) But I do not know how to reduce a function to having one result. This leads to specific problems with certain terms, which I go into more depth on my blog ( http://cdiggins.com/2006/12/09/type-ambiguity-in-cat-and-the-importance-of-formalization/ ). The only solution I can think of is to creat another eval functions which returns two results: eval2 : (a (a -> b c) -> b c) Any thoughts? By cdiggins at 2006-12-10 21:50 | LtU Forum | previous forum topic | next forum topic | other blogs | 16080 reads
|
Browse archives
Active forum topics |
Recent comments
16 weeks 1 day ago
16 weeks 1 day ago
16 weeks 1 day ago
38 weeks 3 days ago
42 weeks 5 days ago
44 weeks 2 days ago
44 weeks 2 days ago
47 weeks 3 hours ago
51 weeks 4 days ago
51 weeks 4 days ago