On this issue: * How does parallel processing fit into the picture? the following may be useful:
In 1989 Henk Goeman combined Lambda Calculus with concepts from concurrency directly, in his paper "Towards a Theory of (Self) Applicative Communicating Processes: a Short Note". The PDF is available at http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.8907 Op 25 mrt. 2013, om 14:40 heeft Jan Wedekind <[email protected]> het volgende geschreven: > Hi, > After reading John Tromp's paper [1] (also see De Bruijn Index [2]) I got > very interested in Binary Lambda Calculus (BLC). In my little spare time I > implemented a BLC interpreter in C [3, 4]. > > I thought it would be interesting to share it on this mailing list since the > motivation behind BLC is similar to the one behind VPRI's Nile [5] and Maru > [6]. The test suite [7] gives a rough overview on how BLC works: > > * 10, 110, 1110, ... are variables. 10 refers to the top of the stack (the > local environment), 110 refers to the next variable in the stack and so on. > * 00M, where M is a term, defines a lambda expression expecting one value on > the stack. E.g. 0010 is the identity function which in Scheme would be > (lambda (x) x). > * 01MN, where M and N are terms, is a function application. E.g. 0100100010 > is the same as ((lambda (x) x) (lambda (x) x)) in Scheme. > > John Tromp's paper furthermore shows how boolean values are represented > using 0000110 and 000010 (i.e. functions taking two arguments and returning > the first or second argument). Scheme's cons is represented by a function > accepting a boolean and returning the head or the tail of the list. An empty > list is represented by 000010 (false). The paper shows a meta-circular > interpreter implemented in 210 bits! > > I'm still undecided about how to approach some things: > * How does parallel processing fit into the picture? > * What's the best way to implement a DSL including booleans, integers, > floating point numbers, strings, .. on top of BLC? > * Is it possible to describe the electronics of integer addition and > multiplication in BLC and still have it jit-compiled to run efficiently on > x86 hardware? > * How to implement I/O (maybe use monadic objects)? Could the I/O > implementation provide equivalent functions to Scheme's quote and eval, too? > > Any comments and suggestions are welcome :) > > Regards Jan > > BTW I am looking forward to the VPRI report on the STEPS project and I hope > there will be future work to make computing suck less. > > [1] http://homepages.cwi.nl/~tromp/cl/LC.pdf > [2] http://en.wikipedia.org/wiki/De_Bruijn_index > [3] https://github.com/wedesoft/blc/ > [4] https://github.com/wedesoft/blc/blob/master/blc.c > [5] https://github.com/damelang/nile/ > [6] http://piumarta.com/software/maru/ > [7] https://github.com/wedesoft/blc/blob/blc/spec_blc.c#L94 > _______________________________________________ > fonc mailing list > [email protected] > http://vpri.org/mailman/listinfo/fonc
_______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
