编程语言 Def Lang

码农软件 · 软件分类 · 脚本编程语言 · 2019-03-04 16:43:42

软件介绍

先给出官网地址:deflang.org

一句话简介:可扩展编程语言 Def 的目标是将 C++ 的高效抽象和 Lisp 的强大表现力融为一体

你可以通过阅读 入门教程源码测试用例 来简要或详细的了解Def到底是怎样的一门编程语言。

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 提交新的代码,或者捐助作者的开发工作。

本文地址:https://codercto.com/soft/d/620.html

深入浅出SQL(中文版)

深入浅出SQL(中文版)

贝里 编 / O‘Reilly Taiwan公司 / 东南大学 / 2009-6 / 98.00元

你将从《深入浅出SQL(中文版)》学到什么?在如今的世界,数据就是力量,但是成功的真正秘诀却是管理你的数据的力量。《深入浅出SQL(中文版)》带你进入SQL语言的心脏地带,从使用INSERT和SELECT这些基本的查询语法到使用子查询(subquery)、连接(join)和事务(transaction)这样的核心技术来操作数据库。到读完《深入浅出SQL(中文版)》之时,你将不仅能够理解高效数据库设......一起来看看 《深入浅出SQL(中文版)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具