Idris
编程范型 | |
---|---|
Edwin Brady | |
发行时间 | 2007 |
| |
BSD-3 | |
.idr, .lidr | |
Idris | |
Agda, Coq, Epigram, Haskell, ML |
Idris
Idris语言
Idris
Idris
语言特性
[编辑]依 赖类型
[编辑]Idris
data Nat = O | S Nat
infixr 5 ::
data Vect : Type -> Nat -> Type where
VNil : Vect a O
| (::) : a -> Vect a k -> Vect a (S k)
嵌入 式 领域特定 语言(EDSL)
[编辑]Idris 对
类型提供 器 (Type Provider)
[编辑]Idris 拥有
示 例
[编辑]语法
[编辑]Idris
module Main
main : IO ()
main = putStrLn "Hello, World!"
该程
Idris
依 赖类型
[编辑]total
append : Vect n a -> Vect m a -> Vect (n + m) a
append Nil ys = ys
append (x :: xs) ys = x :: append xs ys
该函
关键
另一个使用依赖类型的示例:
total
pairAdd : Num a => Vect n a -> Vect n a -> Vect n a
pairAdd Nil Nil = Nil
pairAdd (x :: xs) (y :: ys) = x + y :: pairAdd xs ys
Num a 标志
求 值策略
[编辑]Idris
data Lazy : Type -> Type where
Delay : (val : a) -> Lazy a
Force : Lazy a -> a
boolCase : Bool -> Lazy a -> Lazy a -> a;
boolCase True t e = t;
boolCase False t e = e;
参考 文献
[编辑]- ^ Brady, Edwin. Index of /~eb/darcs/Idris. University of St Andrews School of Computer Science. 2007-12-12. (
原始 内容 存 档于2008-03-20). - ^ Release 1.3.3. 2020
年 5月 23日 [2020年 5月 24日 ]. - ^ Release 1.3.3. [2020-05-25]. (
原始 内容 存 档于2021-02-04). - ^ Idris - News. [2013-12-24]. (
原始 内容 存 档于2013-12-24). - ^ Idris - FAQ. [2013-12-24]. (
原始 内容 存 档于2012-03-11). - ^ Slides from Systems Programming with Dependent Types at DTP11 (PDF).[
永久 失效 連結 ] - ^ Christiansen, David. Dependent type providers (PDF). 2013 [2014-08-26]. (
原始 内容 (PDF)存 档于2017-08-09).
外部 链接
[编辑]- The Idris homepage(页面
存 档备份,存 于互联网档案 馆), including documentation, frequently asked questions and examples - Idris at the Hackage repository(页面
存 档备份,存 于互联网档案 馆) - Idris Tutorial