diff --git a/extra/lisp/lisp.factor b/extra/lisp/lisp.factor index be43d50a18..624f190fb1 100644 --- a/extra/lisp/lisp.factor +++ b/extra/lisp/lisp.factor @@ -61,15 +61,15 @@ PRIVATE> [ swap localize-body convert-body ] dipd pop-locals swap ; : convert-list-form ( lisp-form -- quot ) -dup first - { { [ dup "if" equal? ] [ drop convert-if ] } - { [ dup "begin" equal? ] [ drop convert-begin ] } - { [ dup "cond" equal? ] [ drop convert-cond ] } - { [ dup "lambda" equal? ] [ drop convert-lambda ] } +dup first dup lisp-symbol? [ name>> + { { "lambda" [ convert-lambda ] } + { "if" [ convert-if ] } + { "begin" [ convert-begin ] } + { "cond" [ convert-cond ] } [ drop convert-general-form ] - } cond ; + } case ] [ drop convert-general-form ] if ; : convert-form ( lisp-form -- quot ) - { { [ dup [ sequence? ] [ number? not ] bi and ] [ convert-list-form ] } + { { [ dup vector? ] [ convert-list-form ] } [ [ , ] [ ] make ] } cond ; \ No newline at end of file