Ivory语言是一门可嵌入的领域专用语言,用于更安全的系统编程。你可以将 Ivory看作是在Haskell中嵌入“受限”的C语言。
Ivory 具有以下特性
可嵌入:Ivory以Haskell编程语言的库的形式实现,Ivory使用了Haskell的语法和类型进行编写
领域专用语言:Ivory 提供了强大的类型和内存安全保证,并且具有允许程序员指定其他安全属性的功能
系统编程:Ivory非常适合编写与硬件直接交互的程序,而且不需要动态内存分配
示例代码
HelloWorld
puts :: Def ('[IString] :-> Sint32)puts = importProc "puts" "stdio.h"main :: Def ('[] :-> ())main = proc "main" $ body $ do call_ puts "hello, world\n" retVoidIvory编写的HelloWorld
Fibonacci
fib_loop :: Def ('[Ix 1000] :-> Uint32)fib_loop = proc "fib_loop" $ \ n -> body $ do a <- local (ival 0) b <- local (ival 1) n `times` \ _ -> do a' <- deref a b' <- deref b store a b' store b (a' + b') result <- deref a ret result计算斐波那契数的 Ivory程序,使用了循环和可变状态(mutablestate)
评论