newLISP 語言精華
註釋:
;; this is comment
(println "hello world")
函式定義:
(define (foo x y) (+ x y))
匿名函式:
(fn (x y) (+ x y))
使用命令列編譯指令碼為可執行檔案:
> newlisp -x uppercase.lsp uppercase.exe
布林值只有 nil 和 true, nil 就是假:
> nil
nil
> true
true
字串是用雙引號包圍, 也可以用大括號:
"hello world"
{ hello world }
符號 Symbol 是符號表中的名字:
> (set 'something 123)
> something
123
名稱空間也用符號表示:
(context 'FOO)
列表也用單引號:
> '(1 2 3)
列表可以直接索引:
> (set 'lst '(a b c (d e) (f g)))
> (lst 0) ;; a
> (lst 3) ;; (d e)
> (lst 3 1) ;; e
> (lst -1) ;; (f g)
在 newlisp 中,雜湊是用關聯列表模擬的,要想新增一對 key,value 到這個雜湊中,要先判斷雜湊中是否存在這個 key, 如果不存在,就直接新增進去,如果存在,就修改原有的記錄:
(define (add-pair dict key value)
(if (lookup dict key)
(push (list key value) dict)
(setf (lookup dict key) value)))
將新的記錄新增到關聯列表的最前面,即使已經存在相應的 key, 那麼在查詢的時候,也會被覆蓋。
(list x y) 和 (quote x y) 的不同:
list 後面的每個表示式都會進行運算,而 quote 後面的表示式都會被凍結。
> (list (+ 1 2) 2)
(3 2)
> '((+ 1 2) 2)
((+ 1 2) 2)
如果想將一個列表引用傳入函式, 當這個函式修改這個列表的內容後, 這個列表在外部也會修改.
相關文章
- newLISP 10.5.3 釋出,類 Lisp 的指令碼語言Lisp指令碼
- newlispLisp
- newLISP in 21 minutesLisp
- Flex精華摘要 3:基本語法Flex
- SQL查詢語句精華文章(轉)SQL
- [精華]西班牙語發音總結
- Java 語言是強型別語言語言(轉)Java型別
- 把程式語言看做語言
- 精華-Python十大裝B語法Python
- SQL查詢語句精華使用簡要(轉)SQL
- 愛在冰川語錄精華-2023
- 計算機語言:編譯型/解釋型、動態語言/靜態語言、強型別語言/弱型別語言計算機編譯型別
- java語言屬於哪種語言Java
- Go語言————1、初識GO語言Go
- C語言 C語言野指標C語言指標
- K語言,q語言的前輩
- C語言---“C語言 誰與爭鋒?”C語言
- 概念區別 【編譯型語言與解釋型語言、動態型別語言與靜態型別語言、強型別語言與弱型別語言】編譯型別
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- go語言與c語言的相互呼叫GoC語言
- 從高階語言到機器語言
- SQL語言基礎(資料控制語言)SQL
- SQL語言(結構化查詢語言)SQL
- r語言R語言
- SQL語言SQL
- ASL語言
- J語言
- GO語言Go
- 全能語言
- Rust語言Rust
- Ruby語言
- Elixir語言R語言
- 語言說
- 手本語言
- C語言C語言
- 計算機程式語言的分類,解釋型語言、編譯型語言、指令碼語言的關係計算機編譯指令碼
- 【R語言入門】R語言環境搭建R語言
- 編譯型語言與解釋型語言編譯