Ivory 语言是一门可嵌入的领域专用语言,用于更安全的系统编程。你可以将 Ivory 看作是在 Haskell 中嵌入“受限”的 C 语言。
Ivory 具有以下特性
-
可嵌入:Ivory 以 Haskell 编程语言的库的形式实现,Ivory 使用了 Haskell 的语法和类型进行编写
-
领域专用语言:Ivory 提供了强大的类型和内存安全保证,并且具有允许程序员指定其他安全属性的功能
-
系统编程:Ivory 非常适合编写与硬件直接交互的程序,而且不需要动态内存分配
示例代码
Hello World
puts :: Def ('[IString] :-> Sint32) puts = importProc "puts" "stdio.h" main :: Def ('[] :-> ()) main = proc "main" $ body $ do call_ puts "hello, world\n" retVoid
Ivory 编写的 Hello World
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 程序,使用了循环和可变状态(mutable state)