Commit Graph

86 Commits

Author SHA1 Message Date
JeffBezanson a9b0f7879b removing some unnecessary stuff
improving key-error
2009-03-23 20:44:19 +00:00
JeffBezanson 7059a471a1 initial implementation of let-syntax 2009-03-17 21:53:55 +00:00
JeffBezanson 5edb75af2c making nconc, assq, and memq builtins
some small optimizations to string.map, string.trim,
string.inc, string.dec, aref
2009-03-17 03:29:17 +00:00
JeffBezanson dceced2bb0 fix bug in (case)
reducing use of strlen
2009-03-13 14:54:48 +00:00
JeffBezanson 0643a4f3a2 fixing bug in datum comment #;
improving some library functions
2009-03-13 03:30:10 +00:00
JeffBezanson bfa30fb095 allowing logand, logior, logxor to accept any number of arguments
adding negative?, positive?, zero?, even?, odd?, for-each
adding *linefeed*, terpri
2009-03-12 02:47:34 +00:00
JeffBezanson fdfaacfbe5 adding io.putc, io.tostring!, string.map, print-to-string
fixing bug in ios, not initializing readonly flag
updating string and sizeof to use new strstream functions
removing some redundant numeric type init functions
2009-03-05 03:48:17 +00:00
JeffBezanson 40cff81550 more reorganization of LLT
adding io.readuntil, io.readline
improvements to ios_readprep
2009-03-03 03:16:30 +00:00
JeffBezanson 2cf5187ca9 adding dump, memstream, io.read, and io.write
more renaming
allowing iostreams to be read-only
fixing bug allowing arrays with 0-size elements
2009-03-02 04:26:16 +00:00
JeffBezanson 923c7d5495 fixing bug reading negative constants with #b,o,d,x
adding string.trim
2009-02-28 01:59:01 +00:00
JeffBezanson c1610f0a9f changing load to expand each expression before evaluating
improve performance by reloading system.lsp with this loader
other misc. changes
2009-02-26 18:15:38 +00:00
JeffBezanson 115b2843fb adding copy and string.count 2009-02-24 04:12:33 +00:00
JeffBezanson 76edead57b adding (do ) form 2009-02-20 19:50:35 +00:00
JeffBezanson 3aad0bd6be fixing some bugs in lerror and read
making memory errors non-consing (duh)
cleaning up main() a bit
adding case macro, moving other stuff around a bit
2009-02-20 05:11:05 +00:00
JeffBezanson f1927a3b57 moving delete-duplicates and new f-body so they can be macroexpanded in advance
deprecating setf, labels, and try (weren't used anywhere)
adding string.tail
changing match to use delete-duplicates
2009-02-19 22:29:47 +00:00
JeffBezanson 0c0471e856 moving implementation of startup, repl, load, and top-level
exception handler into system.lsp

adding several iostream functions

adding support for internal define
2009-02-19 03:31:40 +00:00
JeffBezanson 79e12b2dcb adding io.print and io.princ
misc. touch-ups
2009-02-09 05:38:40 +00:00
JeffBezanson 1097597437 file stream creation and io.read 2009-02-09 03:22:31 +00:00
JeffBezanson 2a083db293 adding named let 2009-02-06 03:41:24 +00:00
JeffBezanson 17d81eb4e6 adding #b, #o, #d, #x numeric literals
accepting r6rs IEEE literals +-nan.0 and +-inf.0
printing distinguished -0.0, indicating float with .0f instead
of #float, double with .0 instead of #double

more renaming (? on predicates, ! on mutating operators)
changing T to #t :( all those #s are so ugly
2009-02-01 01:53:58 +00:00
JeffBezanson a55b46e9a6 switching to scheme #t, #f, and () values
porting code to sort out which NILs are false and which are
empty lists

switching to scheme-style special forms. however you feel about
scheme names vs. CL names, using both is silly.

mostly switching to scheme predicate names, with compatibility
aliases for now. adding set-constant! to make this efficient.

adding null?, eqv?, assq, assv, assoc, memq, memv, member

adding 2-argument form of if
allowing else as final cond condition

looking for init file in same directory as executable, so flisp
can be started from anywhere

renaming T to FL_T, since exporting a 1-character symbol is
not very nice

adding opaque type boilerplate example file

adding correctness checking for the pattern-lambda benchmark

bugfix in int2str
2009-01-29 01:04:23 +00:00
JeffBezanson 8197197ced misc. cleanup
adding without-delimited-continuations

adding skeleton for stream objects
2009-01-05 02:45:21 +00:00
JeffBezanson 209b77a534 simplified and improved some of the prettyprinting logic
• eliminated bad behavior near screen edge, added wrapping
• added behavior: indent after some number of non-indented elements
• indent after head symbols with really long names
• don't indent after first argument to setq

improvements to cps converter
• correctly dispatch to non-cps functions
• handle vararg lambdas in head position
2009-01-03 05:30:22 +00:00
JeffBezanson 9716ee3452 making list a builtin
increasing default heapsize, giving better performance

adding hexdump and int2str functions to llt
2008-12-31 04:45:08 +00:00
JeffBezanson dc50df083c adding branch probability annotations
wrote a CPS transformer that can be used to provide coroutines

misc. cleanup
2008-12-28 08:01:18 +00:00
JeffBezanson 830e1c986c renaming 'char' type to 'byte' to avoid confusion
wchar will be used for all individual characters

adding string.find function

fixing bug in #sym(...) if sym was undefined
2008-12-24 04:43:36 +00:00
JeffBezanson 8e4ba69a7b more efficient representation for small tables
adding tablep and table.clone

fixing bug with filename string in load
2008-12-22 06:36:50 +00:00
JeffBezanson dfacb4d897 making all builtins print readably; (builtin 'sym) function
hash table functions:
adding get,put,has,del,table.foldl,table.pairs,table.keys,table.values
2008-12-21 05:55:00 +00:00
JeffBezanson c89111f7cb refactored escape sequence handling a bit, added error for invalid hex
discarding rest of input line after a parse error
made compare() do less work for unordered comparison
added peekc and purge to ios
2008-11-06 04:04:04 +00:00
JeffBezanson 6f934a817b I decided it was rather random that set was the only function
that could access the current environment dynamically. It also
differed unnecessarily from common lisp set in this respect.

So now setq is a builtin special form that sets lexical or
global variables, and set is a function that sets global variables.

Rather than eliminate the power of the dynamic set, I extended it
by adding eval*, which evaluates its argument in the current
environment. The justification for this is that the interpreter
is already dynamic enough to allow it with no overhead, so the
ability might as well be exposed.

cleanup; removing some magic numbers

beginning hash tables
2008-09-06 22:19:51 +00:00
JeffBezanson 7cdd489f86 changing license, since google code does not support the CPL 2008-08-30 02:56:46 +00:00
JeffBezanson c3811312a7 adding vector.map, string.char
fixing 0-trip-count case in (for)
2008-08-02 16:18:39 +00:00
JeffBezanson e08091e4a1 adding (for lo hi f) construct, changing library funcs to use it
setting license to CPL v1
2008-07-26 22:04:02 +00:00
JeffBezanson b76bbe3724 changing environment representation to contiguous values
eliminating built-in label form
2008-07-15 01:20:52 +00:00
JeffBezanson b3b2bc3300 fix to how defun was using macroexpand 2008-07-12 02:58:55 +00:00
JeffBezanson 0c9010a117 import femtolisp source 2008-07-01 01:54:22 +00:00