Prev: A pascal generator in CL ?
Next: lightweight database
From: refun on 16 Mar 2010 11:40 In article <hno5pt$lqo$1(a)news.eternal-september.org>, refun(a)nospam.gmx.com says... I was a bit bored, so I took a quick look at the documentation. Here is a complete listing of all functions/special forms: CAR/CDR/CONS - seems to work on lists instead of cons cells. The documentation seems to allude that a list might not be built out of CONSes, but it's actually an array of pointers to objects. Testing (CONS 1 2) in the REPL seems to generate a list of 2 elements (1 and 2). READ - seems to either read something from the console or from a string and coerce it into a list. QUOTE - Prevents evaluation of the parameter. Strangely, typing random things which can't be evaluated at the REPL seems to just return them as if quoted.. EVAL - The usual meaning, evaluates an object/quoted list. PRINT - Prints an object. Strings seem to come with some standard C-like escape sequences (\n \r \t \\ \") SETF - I'll quote from manual: >Sets value of object VAL to the value of object ID. If ID is identifier, then function will search for the object with that name, going up through the stack to higher addresses memory block, where global variables defined. If such an object is found, its value will be changed to VAL. If such an object doesn?t exist, then it will be created in local memory of current function. If ID is list, then it will be evaluated, and assignment will be made to that evaluation result. LET - Misleading name. It's actually an assignment operator: >Sets value of object VAL to the value of object ID. If such an object is found on the local stack frame, its value will be changed to VAL. If such an object doesn?t exist, then it will be created in local memory of current function. If ID is list, then it will be evaluated, and assignment will be made to that evaluation result. > Example: > (LET myvar ?(3 4 5)) ; assign list to ?myvar? atom >(LET (CAR myvar) 5) ; replace the first element of ?myvar? list to 5. DEFUN/DEFBIN/DEFMACRO - Defines a global function, DEFBIN seems to define a callback (arranges for the executable to have an export with that name that calls the interpreter). DEFMACRO seems* to make the function inlined. STRREAD - reads a string from the console AND/OR - logical and/or, not short circuiting! NOT - logical not PLUS/MINUS/DIV/MUL - integer operations LESS/MORE - comparsion functions AREF - Returns nth character in a string or nth element in a list LEN/LENGTH - List or string length STRCAT - Concatenates strings. LOOP - C while loop equivalent. IDIV/IMUL/MOD - Unlike DIV and MUL, these only take 2 arguments. MALLOC/FREE - Allocate/free a block of memory. GETBYTE/GETWORD/GETDWORD/GETSTRING/SETBYTE/SETWORD/SETDWORD/SETSTRING - read/write to logical memory of the application. Will work with any memory pointer it seems, but I suspect they're meant to be used with malloc/free. CALL - calls a pointer. CALLAPI - Resolves and calls a Win32 API or DLL function. S - Quote from documentation: >Converts A to string and forbids automatic type conversion for resulting object. > Example: > (CALLAPI "MessageBoxA" "User32.dll" 0 "Hello World" "12" 0) ; error! 12 is passed as number > Solution: > (SETF str (S ?12?) ) > (CALLAPI "MessageBoxA" "User32.dll" 0 "Hello World" str 0) FREECONSOLE - "Detaches console from the process" UNTYPED - "Cancels automatic type conversion for resulting object." CHR - "Returns string, consisting of object A, which represents symbol ASCII code" ORD - "Returns ASCII code of first symbol of string S." HEX - "Returns hexadecimal number represented by string S." EXIT - Returns a value from a function. EXITBLOCK - Returns from a block of code if the passed expression is true. JMP - "Jumps to k-th function within current block and continue successive execution." JMPREL - "Jumps to k-th function relative to the current one within current block and continue successive execution. Zero means next instruction." CJMP/CJMPREL - Like JMP, but relative. The semantics of these functions are a mystery to me. $EVAL_ERROR$ - A global variable which contains the current evaluation error. GET-PROGRAM-CODE - "Returns program code" GET-PROGRAM-MEMORY - "Returns virtual machine memory (as object list)" Other functions/special forms: COND,EQ,EQUAL,ATOM,BOUNDP,ISSRING,ISNUMBER,ISINTEGER,BITWISE-AND/BITWISE- OR/BITWISE-NOT/BITWISE-XOR * - The documentation is not perfectly clear about the exact semantics of many such forms, for example, the only line in the DEFMACRO's documentation is: >Defines marco and returns its body. Unlike function, macro body is inserted in place of its call. >Example: >(DEFMACRO println (text) > (PRINT text) > (PRINT ?\n?) >) This seems considerably more low-level than I expected.
From: Pillsy on 16 Mar 2010 12:07 On Mar 16, 9:51 am, Tamas K Papp <tkp...(a)gmail.com> wrote: > On Tue, 16 Mar 2010 05:11:45 -0700, Mark Carter wrote: > > I'm not really a Lisp programmer, but I saw an ad for Bee Lisp. Anyone > > heard of it? Is it any good? > I am curious where you saw the ad. Based on first impressions, Bee > Lisp is either a scam or a misguided attempt. In either case, it seems > surprising that they advertise. It's right next to the Google Groups "sponsored links" for speech therapists. I glanced through the documentation I found on the linked website, and concluded that it's a worthy commercial competitor for Newlisp. Cheers, Pillsy
From: Mark Carter on 16 Mar 2010 13:56 On 16 Mar, 13:51, Tamas K Papp <tkp...(a)gmail.com> wrote: > I am curious where you saw the ad. Gmail ad (not an actual spam email itself). I have been fooling around with Lisp and a couple of Schemes lately, which explains why the ad appeared.
From: Mark Carter on 16 Mar 2010 13:59 On 16 Mar, 13:51, Tamas K Papp <tkp...(a)gmail.com> wrote: > I am curious where you saw the ad. I saw it on a Gmail ad. I've been toying around with Lisp and some Schemes recently.
From: cbbrowne on 16 Mar 2010 14:48
On Mar 16, 9:51 am, Tamas K Papp <tkp...(a)gmail.com> wrote: > On Tue, 16 Mar 2010 05:11:45 -0700, Mark Carter wrote: > > I'm not really a Lisp programmer, but I saw an ad for Bee Lisp. Anyone > > heard of it? Is it any good? > > I am curious where you saw the ad. Based on first impressions, Bee > Lisp is either a scam or a misguided attempt. In either case, it seems > surprising that they advertise. For a while, I saw it as an ad on GMail, evidently because I had enough Lisp-ish stuff in my inbox. -- Christopher Browne |