From 86c288d11642f5fdd8ed421f6c421a8e5bac5300 Mon Sep 17 00:00:00 2001 From: Jordan Orelli Date: Sun, 21 Oct 2012 15:48:27 -0400 Subject: [PATCH] added "list?" builtin --- proc.go | 9 +++++++++ skeam.go | 1 + 2 files changed, 10 insertions(+) diff --git a/proc.go b/proc.go index 0986ceb..aae46ef 100644 --- a/proc.go +++ b/proc.go @@ -110,3 +110,12 @@ func length(vals []interface{}) (interface{}, error) { func list(vals []interface{}) (interface{}, error) { return sexp(vals), nil } + +func islist(vals []interface{}) (interface{}, error) { + if err := checkArity(1, vals, "list?"); err != nil { + return nil, err + } + + _, ok := vals[0].(sexp) + return ok, nil +} diff --git a/skeam.go b/skeam.go index 4f29889..33d4fcd 100644 --- a/skeam.go +++ b/skeam.go @@ -29,6 +29,7 @@ var universe = &environment{map[symbol]interface{}{ "/": builtin(division), "length": builtin(length), "list": builtin(list), + "list?": builtin(islist), "not": builtin(not), "begin": special(begin), "define": special(define),