Code: Select all
(define (myhash:myhash key value)
(if value
(context 'myhash key value)
(context 'myhash key)))
(myhash "hello" 123)
(myhash "hello") => 123
ps: also added to the manual
Code: Select all
(define (myhash:myhash key value)
(if value
(context 'myhash key value)
(context 'myhash key)))
(myhash "hello" 123)
(myhash "hello") => 123
Code: Select all
(context 'Dict)
(define (Dict:Dict key value)
(if value
(context (context) key value)
(context (context) key)))
(define (get key) (Dict key))
(define (put key value) (Dict key value))
(define (keys)
(map name (difference
(symbols)
(cons
(sym (string (context)) (context))
'(Dict get put keys key value values)))))
(define (values)
(map get (keys)))
(context MAIN)
Code: Select all
> (new Dict 'd)
d
> (d "name" "fred")
"fred"
> (d "age" 10)
10
> (d:put "salary" 10000)
10000
> (d:get "salary")
10000
> (d:keys)
("age" "name" "salary")
> (d:values)
(10 "fred" 10000)
Code: Select all
my %dict = (name=> 'Aragorn' , alias=> 'Strider');
while(($key, $val) = each %dict)
{
print "key = $key, value = $val\n";
}
Code: Select all
(define (words:words key value)
(if value
(context 'words key value)
(context 'words key)))
> (words "one" 1)
1
> (words "two" 2)
2
> (words "three" 3)
3
> (words "four" 4)
4
>
Code: Select all
(dotree (w words)
(if (not (lambda? (eval w)))
(println (name w) "=>" (eval w))))
; will output
four=>4
one=>1
three=>3
two=>2
Code: Select all
(context 'words "one" 1)
(context 'words "two" 2)
(context 'words "three" 3)
Code: Select all
(dotree (w words)
(println (name w) "=>" (eval w))))
; will output
four=>4
one=>1
three=>3
two=>2
Code: Select all
(define-macro (do-keys)
(letex (v (first (first (args))))
(dotree (v (last (first (args))))
(if (not (lambda? (eval v)))
(map eval (rest (args)))))))
Code: Select all
(do-keys (s d)
(println s " " (eval s)))
d:age 10
d:key nil
d:name fred
d:salary 10000
d:value nil
Code: Select all
(dotree (s d)
(println s " " (eval s)))
d:Dict (lambda (d:key d:value)
(if d:value
(context (context) d:key d:value)
(context (context) d:key)))
d:age 10
d:d (lambda (d:key d:value)
(if d:value
(context (context) d:key d:value)
...