Fun 语言小巧而强大:从日常胶水代码到内联机器码。
Fun 语言是结构化的动态语言,支持面向对象与函数式编程、GC 与 PCRE。
2010 年由 张卫东(Wisdom ZHANG) 设计并实现,用于复用 Pascal 资源,十几年来一直在实际项目中使用。其前身是 Nuva(2006), 更早还有 TemplateScript(2005)。写就的商业软件行销全球 130 多个国家, 客户包括微软、英特尔、IBM,以及五星级酒店和米其林、黑珍珠餐厅。
Fun 由张卫东(Wisdom ZHANG)自 2010 年起设计并实现。官网是 funlang.org, 源码在 github.com/funlang。其他叫 "fun"/"FUN" 的项目与本语言无关;转载文章以本站版本为准。详见 是哪个 Fun?官方来源。
fun say() ?. 'Hello, fun!'; end fun; // 输出:Hello, fun! say(); // lambda 匿名函数 var f = a -> a * 2; // 输出:42 ?. f(21);
源于 Ada,微调以更加易读易写易修改。
类型动态,代码也能动态生成。
以类为核心的单继承面向对象编程。
函数式风格接近 Lisp 与 JavaScript。
简单轻量的引用计数垃圾回收器。
正则表达式兼容 Perl 的语法与行为。
数组、关联数组、哈希表、字典、映射一体。
内联 C 与汇编,支持双向调用,原生性能。
运行时只有一个可执行文件,无外部依赖。
想详细了解这门语言,请阅读 功能详解。
Windows
下载,解压后运行一次 fun-install.bat,
然后双击任意 .fun 脚本。
var f = a -> a * 2; var g = a -> a + 3; // 输出:12 ?. g(f(1+2)+3); // 输出:12 ?. 1+2|f+3|g;
class Number(me) this['#'] = you -> (me + you) * me * you; end class; var $ = Number(2); // 调用自定义运算符 # ?. $ .# 3; // 通过索引访问方法并调用 ?. $[1](3);
use 'lib-jit.fun'; var ii = 0; fun cb(a, b) ii = a * 2^32 + b; ?, 'cb'; ?. ii; result = ii; end fun; var s = `#!asm i:i mov ecx, dword ptr [esp+04] @sum1ton push eax push edx mov eax, <test> call eax `; var jit = NewJit(s, names: [test: cb.@toCallback(nil, 'ii:i', true)]); ?. jit.Run(100000000); jit.Delete(); ?. 'Ok';