全新通用編程語言 Def 招募核心貢獻者、文檔做者、佈道師 deflang.org

先給出官網地址:deflang.orggit

一句話簡介:可擴展編程語言 Def 的目標是將 C++ 的高效抽象和 Lisp 的強大表現力融爲一體。程序員

你能夠經過閱讀 入門教程源碼測試用例 來簡要或詳細的瞭解Def究竟是怎樣的一門編程語言。github

Def 有着雄心勃勃的計劃:在不損失效率的狀況下達到現代腳本語言的高度抽象,並儘量的減小程序員的負擔。目前已經實現的部分爲:類、泛型、函數重載、函數嵌套、函數模板、操做符綁定、徹底類型推導、基於宏的元編程等,接下來須要您幫助實現的部分是: 清晰友好的錯誤提示,lambda表達式等高級特徵。編程

Def 的前綴 可擴展編程語言 指的是:你能夠創造本來不存在的語義、自定義符號綁定的語法、甚至修改語言的內核。這一切意味着,你能夠親手將 Def打形成任何你想要的語言!編程語言

示例代碼:函數

;; 添加操做符綁定
let ( a + b ) ( add a b )
let ( a := b ) ( var a b )
let ( a.b ) ( elmget a b )
;; 自定義類型
type Point (
    Int x
    Int y
)
;; 定義變量並初始化
p1 := Point 1 2   ; 類型初始化語法與函數調用相同
p2 := Point 3 4
;; 重載 add 函數,利用函數模板
tpf add(a b)(  ; tpf 定義函數模板
    Point (a.x)+(a.y) (b.x)+(b.y)
)
;; 重載的模板函數調用
p1 + p2

;; Def 多返回值函數
fun getTuple()(
    ret tuple (  ; 返回元組類型
        10
        9.9
        'a'
    )
)
;; 獲得元組並使用
var tp getTuple  ; 是的,函數調用不須要括號
var num elmget tp 0  ; num = tp[0]
 
;; 定義元組拆包宏
let upk(names val)(  ;  upk 爲 unpack 的縮寫
    mcrfor(names)( var _v elmget val _i )
    ; mcrfor 表示宏參數循環  _v 爲值  _i 爲循環索引
)
 
;; 使用拆包宏
upk(a b c) tp

若是你對 Def 感興趣,請上 Github 提交新的代碼,或者 捐助 做者的開發工做。測試

相關文章
相關標籤/搜索