Commit Graph

8 Commits

Author SHA1 Message Date
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 b5dda68eab adding support for finalization of values
enabling type-specific print and relocate behavior

allowing GC to be triggered by large buffer allocations

adding hash table constructor and print function

renamed some functions
2008-12-20 06:16:00 +00:00
JeffBezanson 6962211e76 changing representation of cvalue types so each type is
explicitly represented in an fltype_t struct, and symbolic
types are hash-consed. a lot of code is smaller and simpler
as a result. this should allow more features in less space
(both code and data) going forward.

changing \DDD and \x escape sequences to read bytes instead of
characters

re-fixing uint64 cast bug

adding Paul Hsieh's hash function, to be evaluated later
2008-12-11 04:04:17 +00:00
JeffBezanson a4bb09bcb2 adding equalhash.c
some cleanup

moving some library code around for size optimization

now using == instead of flt_equals for float comparison, mostly
for hash compatibility
2008-11-28 21:44:59 +00:00
JeffBezanson e7e5677d51 support reading hex float literals
better text representation of infs and nans

removing construction of low-level numeric types directly from strings

adding hash function corresponding to equal

better way to initialize builtins

moving advanced bitvector ops to separate compilation unit

rearranging hash table code so it can be specialized for different
comparison functions

one good way to bloat a piece of software is to add several
ASCII pictures of the mona lisa
2008-11-23 07:12:37 +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