Very, very nearly ready for 0.0.6. Too tired to press the burron tonight.
This commit is contained in:
parent
b720211b7b
commit
1900bca706
29 changed files with 567 additions and 800 deletions
|
|
@ -2,13 +2,7 @@
|
|||
|
||||
(set! defun!
|
||||
(nlambda
|
||||
form
|
||||
(cond ((symbol? (car form))
|
||||
(set (car form) (apply 'lambda (cdr form))))
|
||||
(t nil))))
|
||||
|
||||
(set! defun!
|
||||
(nlambda
|
||||
"`(defun name arg-list forms...)`: Define an interpreted Lambda function with this `name` and this `arg-list`, whose body is comprised of these `forms`."
|
||||
form
|
||||
(eval (list 'set! (car form) (cons 'lambda (cdr form))))))
|
||||
|
||||
|
|
@ -20,7 +14,7 @@
|
|||
(cond (symbol? (car form))
|
||||
(set! (car form) (apply nlambda (cdr form))))))
|
||||
|
||||
(defsp! cube (x) ((* x x x)))
|
||||
(defun! cube (x) (* x x x))
|
||||
|
||||
(set! p 5)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,17 @@
|
|||
;; This version segfaults, I think due to a bug in `let`?
|
||||
;; (set! documentation (lambda (object)
|
||||
;; (cond ((= (type object) "LMDA")
|
||||
;; (let ((d . (nth 3 (source object))))
|
||||
;; (cond ((string? d) d)
|
||||
;; (t (source object)))))
|
||||
;; ((member (type object) '("FUNC" "SPFM"))
|
||||
;; (:documentation (meta object))))))
|
||||
;;
|
||||
;; (set! doc documentation)
|
||||
;; This function depends on:
|
||||
;; `member` (from file `member.lisp`)
|
||||
;; `nth` (from `nth.lisp`)
|
||||
;; `string?` (from `types.lisp`)
|
||||
|
||||
(set! documentation (lambda (object)
|
||||
"`(documentation object)`: Return documentation for the specified `object`, if available, else `nil`."
|
||||
(cond ((member? (type object) '("FUNC" "SPFM"))
|
||||
(:documentation (meta object)))
|
||||
((member? (type object) '("LMDA" "NLMD"))
|
||||
(let ((d . (nth 3 (source object))))
|
||||
(cond ((string? d) d)
|
||||
(t (source object)))))
|
||||
(t object))))
|
||||
|
||||
(set! doc documentation)
|
||||
|
||||
;; This version returns nil even when documentation exists, but doesn't segfault.
|
||||
(set! documentation
|
||||
(lambda (object)
|
||||
"`(documentation object)`: Return documentation for the specified `object`, if available, else `nil`."
|
||||
(cond ((and (member (type object) '("LMDA" "NLMD"))
|
||||
(string? (nth 3 (source object))))
|
||||
(nth 3 (source object)))
|
||||
((member (type object) '("FUNC" "SPFM"))
|
||||
(:documentation (meta object))))))
|
||||
|
|
|
|||
|
|
@ -3,12 +3,12 @@
|
|||
"`(nil? object)`: Return `t` if object is `nil`, else `t`."
|
||||
(= o nil)))
|
||||
|
||||
(set! member (lambda
|
||||
(set! member? (lambda
|
||||
(item collection)
|
||||
"`(member item collection)`: Return `t` if this `item` is a member of this `collection`, else `nil`."
|
||||
(cond
|
||||
((nil? collection) nil)
|
||||
((= item (car collection)) t)
|
||||
(t (member item (cdr collection))))))
|
||||
(t (member? item (cdr collection))))))
|
||||
|
||||
(member (type member) '("LMDA" "NLMD"))
|
||||
;; (member? (type member?) '("LMDA" "NLMD"))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue