| @@ -1,7 +1,7 @@ | |||||
| (import "alist.slime") | (import "alist.slime") | ||||
| (define-typed (tf n :number a :alist) | (define-typed (tf n :number a :alist) | ||||
| (printf n) | |||||
| (printf :end " " "the number is" n "and the alist is") | |||||
| (pprint-alist a)) | (pprint-alist a)) | ||||
| @@ -13,4 +13,5 @@ | |||||
| (define (test a b) | (define (test a b) | ||||
| (printf a b)) | (printf a b)) | ||||
| (printf "addr-of test:" (addr-of test)) | |||||
| (test :ij :yes) | (test :ij :yes) | ||||
| @@ -9,7 +9,7 @@ pushd bin | |||||
| taskkill /F /IM %exeName% > NUL 2> NUL | taskkill /F /IM %exeName% > NUL 2> NUL | ||||
| echo ---------- Compiling ---------- | echo ---------- Compiling ---------- | ||||
| call timecmd cl ../src/main.cpp /std:c++latest /Fe%exeName% /W3 /Zi /nologo /EHsc /link /NODEFAULTLIB:libucrt libucrtd.lib | |||||
| call ..\timecmd cl ../src/main.cpp /std:c++latest /Fe%exeName% /W3 /Zi /nologo /EHsc /link /NODEFAULTLIB:libucrt libucrtd.lib | |||||
| popd | popd | ||||
| if %errorlevel% == 0 ( | if %errorlevel% == 0 ( | ||||
| @@ -427,7 +427,7 @@ proc eval_expr(Lisp_Object* node, Environment* env) -> Lisp_Object* { | |||||
| // is done at runtime...). That is why we sometimes have | // is done at runtime...). That is why we sometimes have | ||||
| // stray macros fying around, in that case, we expand them | // stray macros fying around, in that case, we expand them | ||||
| // and bake them in, so they do not have to be expanded | // and bake them in, so they do not have to be expanded | ||||
| // later again. | |||||
| // later again. We will call this "lazy macro expansion" | |||||
| if (lispOperator->value.function.type == Function_Type::Macro) { | if (lispOperator->value.function.type == Function_Type::Macro) { | ||||
| *node = *result; | *node = *result; | ||||
| try result = eval_expr(result, env); | try result = eval_expr(result, env); | ||||
| @@ -287,12 +287,12 @@ namespace Memory { | |||||
| // TODO(Felix): If argument is a list (pair), do a FULL copy, | // TODO(Felix): If argument is a list (pair), do a FULL copy, | ||||
| // we don't copy singleton objects | // we don't copy singleton objects | ||||
| if ( | |||||
| n == Memory::nil || n == Memory::t || | |||||
| if (n == Memory::nil || n == Memory::t || | |||||
| Memory::get_type(n) == Lisp_Object_Type::Symbol || | Memory::get_type(n) == Lisp_Object_Type::Symbol || | ||||
| Memory::get_type(n) == Lisp_Object_Type::Keyword | |||||
| ) | |||||
| Memory::get_type(n) == Lisp_Object_Type::Keyword) | |||||
| { | |||||
| return n; | return n; | ||||
| } | |||||
| Lisp_Object* target; | Lisp_Object* target; | ||||
| try target = create_lisp_object(); | try target = create_lisp_object(); | ||||