Merge branch 'develop' of ssh://git.journeyman.cc:4022/simon/post-scarcity into develop
This commit is contained in:
commit
34ef8cd4c1
|
@ -32,6 +32,16 @@
|
|||
#include "arith/real.h"
|
||||
#include "memory/vectorspace.h"
|
||||
|
||||
// We can't, I think, use libreadline, because we read character by character,
|
||||
// not line by line, and because we use wide characters. So we're going to have
|
||||
// to reimplement it. So we're going to have to maintain history of the forms
|
||||
// (or strings, but I currently think forms). So we're going to have to be able
|
||||
// to detact special keys, particularly, at this stage, the uparrow and down-
|
||||
// arrow keys
|
||||
// #include <readline/readline.h>
|
||||
// #include <readline/history.h>
|
||||
|
||||
|
||||
/*
|
||||
* for the time being things which may be read are:
|
||||
* * strings
|
||||
|
@ -325,11 +335,10 @@ struct cons_pointer read_number( struct stack_frame *frame,
|
|||
}
|
||||
break;
|
||||
case LCOMMA:
|
||||
// silently ignore it.
|
||||
// silently ignore comma.
|
||||
break;
|
||||
default:
|
||||
result = add_integers( multiply_integers( result, base ),
|
||||
/* /todo: this won't work for hex digits */
|
||||
make_integer( ( int ) c - ( int ) '0',
|
||||
NIL ) );
|
||||
|
||||
|
|
|
@ -121,6 +121,30 @@
|
|||
*/
|
||||
#define LOOPTV 1347374924
|
||||
|
||||
/**
|
||||
* @brief Tag for a lazy cons cell.
|
||||
*
|
||||
* A lazy cons cell is like a cons cell, but lazy.
|
||||
*
|
||||
*/
|
||||
#define LAZYCONSTAG "LZYC"
|
||||
|
||||
/**
|
||||
* @brief Tag for a lazy string cell.
|
||||
*
|
||||
* A lazy string cell is like a string cell, but lazy.
|
||||
*
|
||||
*/
|
||||
#define LAZYSTRTAG "LZYS"
|
||||
|
||||
/**
|
||||
* @brief Tag for a lazy worker cell.
|
||||
*
|
||||
* A lazy
|
||||
*
|
||||
*/
|
||||
#define LAZYWRKRTAG "WRKR"
|
||||
|
||||
/**
|
||||
* The special cons cell at address {0,0} whose car and cdr both point to
|
||||
* itself.
|
||||
|
|
|
@ -129,6 +129,51 @@ else
|
|||
fi
|
||||
|
||||
|
||||
#####################################################################
|
||||
# add two small bignums to produce a bigger bignum
|
||||
|
||||
a=1152921504606846977
|
||||
c=`echo "$a + $a" | bc`
|
||||
echo -n "adding $a to $a: "
|
||||
expected='t'
|
||||
output=`echo "(= (+ $a $b) $c)" | target/psse -v 2 2>psse.log`
|
||||
|
||||
actual=`echo $output |\
|
||||
tail -1 |\
|
||||
sed 's/\,//g'`
|
||||
|
||||
if [ "${expected}" = "${actual}" ]
|
||||
then
|
||||
echo "OK"
|
||||
else
|
||||
echo "Fail: expected '${expected}', got '${actual}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#####################################################################
|
||||
# add five small bignums to produce a bigger bignum
|
||||
|
||||
a=1152921504606846977
|
||||
c=`echo "$a * 5" | bc`
|
||||
echo -n "adding $a, $a $a, $a, $a: "
|
||||
expected='t'
|
||||
output=`echo "(= (+ $a $a $a $a $a) $c)" | target/psse -v 2 2>psse.log`
|
||||
|
||||
actual=`echo $output |\
|
||||
tail -1 |\
|
||||
sed 's/\,//g'`
|
||||
|
||||
if [ "${expected}" = "${actual}" ]
|
||||
then
|
||||
echo "OK"
|
||||
else
|
||||
echo "Fail: expected '${expected}', got '${actual}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
# add two bignums to produce a bignum
|
||||
a=10000000000000000000
|
||||
|
|
Loading…
Reference in a new issue