Share to: share facebook share twitter share wa share telegram print page

Idris

Idris
编程范型函数式编程
設計者Edwin Brady
发行时间2007年,​17年前​(2007[1]
当前版本
  • 1.3.3 (2020年5月23日)[2]
編輯維基數據鏈接
型態系統静态类型, 强类型, 依赖类型
操作系统跨平台
許可證BSD-3
文件扩展名.idr, .lidr
網站Idris
啟發語言
Agda, Coq, Epigram英语Epigram (programming language), Haskell, ML

Idris是一个通用的依赖类型纯函数式编程语言,其类型系统Agda以及Epigram英语Epigram (programming language)相似。

Idris语言具备堪与Coq媲美的交互式定理证明能力,自带tactics,而其设计目标侧重于通用系统编程更甚于辅助证明。Idris的其他设计目标还包括“可观的”代码性能,对副作用的控制,以及对于实现嵌入式领域特定语言(Embedded Domain Specific Language,EDSL)的支持。

Idris通过一个依赖类型的核心语言TT生成C语言的中间代码并编译到本地机器码,并利用了一个基于Cheney算法垃圾收集器实现。Idris亦拥有 JavaScriptJavaLLVM的编译器后端。[4]

Idris的名字来自于20世纪70年代的英国儿童动画片《火车头艾弗英语Ivor_the_Engine#Idris_the_Dragon》里,一条会唱歌的[5]

语言特性

依赖类型

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 对嵌入式领域特定语言的支持主要包括以下方面[6]

  1. 编译期间求值。
  2. 重载的语法。
  3. 与C语言库的接口,以及高效的代码生成

类型提供器(Type Provider)

Idris 拥有与 F# 相似的类型提供器,它允许编译器在编译期间根据所执行代码的需求而生成新的类型信息。这使得静态类型系统更具可扩展性。[7]

示例

语法

Idris 的语法与 Haskell 有许多相似之处。一个最简单的 Hello World 程序如下:

module Main

main : IO ()
main = putStrLn "Hello, World!"

该程序与 Haskell 的等效写法仅有两点不同:类型签名使用单个冒号“:”而不是双冒号“::”;开头的模块声明中不必使用 where 从句。

Idris 亦支持 where 从句、let 表达式、with 规则、简单的 case 表达式和模式匹配等。

依赖类型

一个在 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

该函数将一个包含 m 个类型 a 的元素的 vector 连接到一个包含 n 个类型 a 的元素的 vector 之后。由于输入 vector 的确切类型依赖于它的值,故在编译(类型检查)时即可保证输出的 vector 必将包含 (n + m) 个类型 a 的元素。

关键字“total”将会执行函数的完整性(totality)检查。若函数定义未涵盖所有可能的情形(partial function),则检查器会报错。

另一个使用依赖类型的示例:

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 标志着类型 a 属于 Type class英语Type class Num。注意在这里,该函数被认为是完整的(total),尽管并未定义一个参数是 Nil 而另一个参数非 Nil 的模式。原因在于两个作为参数的 vector 只能具备相同的长度,这一点通过依赖类型系统得到了保证,因此在编译时两者长度不同的情形绝无可能发生。这使得该函数定义仍然是完整的。

求值策略

Idris 默认采取及早求值(Eager evaluation),而非 Haskell 的惰性求值(Lazy evaluation)方式。Idris 支持使用 Lazy 关键字显式地指定惰性求值:

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;

参考文献

  1. ^ Brady, Edwin. Index of /~eb/darcs/Idris. University of St Andrews School of Computer Science. 2007-12-12. (原始内容存档于2008-03-20). 
  2. ^ Release 1.3.3. 2020年5月23日 [2020年5月24日]. 
  3. ^ Release 1.3.3. [2020-05-25]. (原始内容存档于2021-02-04). 
  4. ^ Idris - News. [2013-12-24]. (原始内容存档于2013-12-24). 
  5. ^ Idris - FAQ. [2013-12-24]. (原始内容存档于2012-03-11). 
  6. ^ Slides from Systems Programming with Dependent Types at DTP11 (PDF). [永久失效連結]
  7. ^ Christiansen, David. Dependent type providers (PDF). 2013 [2014-08-26]. (原始内容 (PDF)存档于2017-08-09). 

外部链接

Read more information:

Georgië als wijnproducerend land Wijnbouw in Georgië vindt praktisch in het hele land plaats en is een van de oudste ter wereld. De vruchtbare valleien van de zuidelijke Kaukasus worden door archeologen verondersteld de bron te zijn van de voor het eerst geteelde wijnstokken - de Vitis vinifera - bedoeld voor wijn. De neolithische wijnproductie dateert van omstreeks 5.000 jaar voor Christus.[1][2] Door de vele millennia van wijnbouw gedurende de Georgische geschiedenis, is de t…

Trinidad y Tobago en los Juegos Panamericanos Bandera de Trinidad y TobagoCódigo COI TTOCON Comité Olímpico de Trinidad y TobagoJuegos PanamericanosDeportistas 63 en 12 deportesAbanderado Nicholas Paul y Tiana GuyMedallasPuesto: 19 Oro1 Plata1 Bronce2 Total4 Cronología 2019 2023 2027 [editar datos en Wikidata] Trinidad y Tobago compitió en los Juegos Panamericanos de 2023 que se realizaron en Santiago, Chile, obteniendo 4 medallas: 1 oro, 1 plata y 2 bronces. La delegación a…

Samuel EilenbergSamuel Eilenberg (1970)Lahir(1913-09-30)30 September 1913Warsawa, Polandia, Kekaisaran RusiaMeninggal30 Januari 1998(1998-01-30) (umur 84)New York City, Amerika SerikatKebangsaanPolandia, Amerika SerikatWarga negaraAmerika SerikatAlmamaterUniversitas WarsawaKarier ilmiahBidangMatematikaInstitusiColumbia UniversityPembimbing doktoralKazimierz KuratowskiKarol BorsukMahasiswa doktoralJonathan BeckDavid BuchsbaumMartin GolumbicDaniel KanWilliam LawvereRamaiyengar SridharanMyles …

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (نوفمبر 2019) خوسيه ن. غاندارا معلومات شخصية الميلاد 26 أغسطس 1907  بونس، بورتوريكو  تاريخ الوفاة سنة 1954  مواطنة الولايات المتحدة  الحياة العملية المدرسة الأم مركز

Badan Siber dan Sandi Negara(BSSN)Lambang Badan Siber dan Sandi NegaraBendera Badan Siber dan Sandi NegaraGambaran umumDidirikan19 Mei 2017; 6 tahun lalu (2017-05-19)Dasar hukum Perpres No. 53 Tahun 2017 (diubah oleh Perpres No. 133 Tahun 2017; keduanya telah dicabut) Perpres No. 28 Tahun 2021 Nomenklatur sebelumnya Lembaga Sandi Negara Desk Ketahanan dan Keamanan Informasi Cyber Nasional Direktorat Keamanan Informasi Indonesia Security Incident Response Team on Internet Infrastructure Bida…

Kapitan Phoa Beng GanKapitan Cina Batavia ketigaMasa jabatan1645–1663PendahuluKapitan Lim Lak KoPenggantiKapitan Gan DjieDaerah pemilihanBatavia Informasi pribadiPekerjaanKapitan CinaSunting kotak info • L • B Phoa Beng Gan, Kapitan Cina (juga disebut sebagai Bingam atau Phoa Bing Gam (Hanzi: 潘明岩甲; Pinyin: Pān Míngyán Jia) di sejumlah literatur tua) dulu adalah seorang birokrat dan insinyur berlatar belakang Tionghoa Indonesia. Phoa paling dikenal berkat proyek…

Bagi orang yang terkena najis hukmi dapat menghalangi sahnya orang tersebut dalam beribadah Najis hukmi merupakan najis yang tidak terlihat namun diyakini kewujudannya.[1] Dalam ajaran Islam najis hukmi adalah kotoran yang menempel di badan sehingga menghalangi sahnya beribadah.[1] Najis hukmi dapat juga dikatakan sebagai najis yang tidak mempunyai zhad (tubuh) hal itu dapat diketahui karena ada rasa dan baunya contohnya hadats.[1] Percikkan najis hukmi juga tergolong ked…

إرفين زادور بعد انتهاء المباراة، ويُرى الدم يتدفق من وجهه بسبب جرح أسفل عينه اليمنى، كما يُرى واضحاً في الصورة. مباراة «الدماء في الماء» (بالمجرية: Melbourne-i vérfürdő)‏، (بالروسية: Кровь в бассейне)‏، أو «حمام دماء ميلبورن»، كانت مباراة في كرة الماء جرت بين المجر والاتحاد السوفيت

Anikka AlbriteAlbrite, 2015Lahir7 Agustus 1988 (umur 35)[1]Denver, Colorado, A.S.[2][3][4]Nama lainAnnika Albrite, Anikka Albright, Annika Albright, Annikka Albrite[5]Tahun aktif2011-sekarang [5]Tinggi5 ft 6[5] in (168 cm)BeratTemplat:Convinfobox/ter3Suami/istriMick Blue ​(m. 2014)​[6][7]Anak1 Anikka Albrite (lahir 7 Agustus 1988) adalah seorang aktris porno berkeban…

British historian and author (1941–2019) For the American psychotherapist and art collector, see Norman C. Stone. For the Maryland state senator, see Norman R. Stone Jr. For the English footballer, see Norman Stone (footballer). Norman StoneStone in 2010Born(1941-03-08)8 March 1941Kelvinside, Glasgow, ScotlandDied19 June 2019(2019-06-19) (aged 78)Budapest, Hungary[1]EducationGonville and Caius College, Cambridge (BA)Employer(s)University of Cambridge: Fellow, Gonville and Caius Co…

Military leader and Emperor of the French (1769–1821) For other uses, see Napoleon (disambiguation) and Napoleon Bonaparte (disambiguation). This article may be too long to read and navigate comfortably. Its current readable prose size is 16600 words. Please consider splitting content into sub-articles, condensing it, or adding subheadings. Please discuss this issue on the article's talk page. (June 2023) NapoleonThe Emperor Napoleon in His Study at the Tuileries, 1812First Consul of the Frenc…

Dataran Tinggi Golan هضبة الجولانרמת הגולןDanau Ram dekat gunung Hermon (latar belakang), di bagian timur laut Dataran Tinggi GolanCountryWilayah Negara Suriah yang dikuasai oleh Israel International Labour Office (2009). The situation of workers of the occupied Arab territories (edisi ke-International government publication). International Labour Office. hlm. 23. ISBN 978-92-2-120630-9.  (The Arab Peace Initiative, 2002, www.al-bab.com. Retrieved August 1, 2010…

Indian Army regiment 75 Armoured RegimentActive1972 – presentCountry IndiaAllegianceIndiaBranch Indian ArmyTypeArmoured CorpsSizeRegimentMotto(s)साहसं विजयते “Sahasam Vijayate (Courage Wins)”ColorsCanary Yellow over Bottle GreenEquipmentMBT Arjun[1]Battle honoursTheatre Honour ‘Sindh’CommandersNotablecommandersLt Gen Vijai SinghInsigniaAbbreviation75 Armd RegtMilitary unit 75 Armoured Regiment is an armoured regiment of the Indian Army. MBT Arjun of 7…

2009 video gameSpongeBob's Truth or SquareNorth American Xbox 360 coverDeveloper(s)Heavy Iron Studios (X360, Wii)Barking Lizards Technologies (PSP)Altron (DS)Publisher(s)THQDirector(s)Kirk TomeProducer(s)Diana WuDesigner(s)Brian McInernyScott ComptonMatt EkinsProgrammer(s)Mark PriceArtist(s)Dorothy ChenSean HoRobert RoseSt. John ColonWriter(s)Mr. LawrenceComposer(s)Steve BelferSage GuytonJeremy WakefieldThe Blue HawaiiansJimmy LevineRobert CrewAlex WilkinsonJohn O'KennedyBarry FasmanBeth Ertz (W…

Gambar salah satu halaman Burchard of Worms' Decretum, buku ke-11 Undang-Undang Gereja. Hukum Gereja adalah istilah untuk aturan-aturan dalam gereja, khususnya dalam lingkungan Kristen. Juga merupakan subyek sebuah studi teologi yang secara sistematis mengkaji prinsip-prinsip ekklesiologis dari aturan-aturan dalam gereja. Istilah Kata hukum gereja secara langsung mengarah kepada peraturan-peraturan dalam gereja. J. L. Ch. Abineno, mengartikan hukum gereja sebagai peraturan gereja yang digunakan …

Town in Tennessee, United StatesUnicoiTownUnicoi Town Hall Location of Unicoi in Unicoi County, Tennessee.Coordinates: 36°13′12″N 82°20′17″W / 36.22000°N 82.33806°W / 36.22000; -82.33806CountryUnited StatesStateTennesseeCountyUnicoiIncorporated1994[1]Named forUnaka, Cherokee for white[2]Area[3] • Total16.19 sq mi (41.93 km2) • Land16.19 sq mi (41.93 km2) • Water0.00 …

District Radom Radom District was one of the first four Nazi districts of the General Governorate region of German-occupied Poland during World War II, along with Warsaw District, Lublin District, and Kraków District. To the west it bordered Reichsgau Wartheland and East Upper Silesia.[1][2] The district's governors were Karl Lasch from 1939 to 1941, followed by Ernst Kundt until 1945. It is estimated that the district's population in 1940 was approximately 3 million people,[…

Indian cricketer and coach Lalchand RajputPersonal informationFull nameLalchand Sitaram RajputBorn (1961-12-18) 18 December 1961 (age 61)Bombay, Maharashtra, IndiaBattingRight-handedRoleBatsmanRelationsAkhil Rajput (son)[1]International information National sideIndiaTest debut (cap 171)10 August 1985 v Sri LankaLast Test6 September 1985 v Sri LankaODI debut (cap 53)23 January 1985 v EnglandLast ODI24 March 1987 v Pakista…

Movie theater at Disneyland Main Street CinemaMain Street Cinema with Halloween decor at DisneylandDisneylandAreaMain Street, U.S.A.StatusOperatingOpening dateJuly 17, 1955 Magic KingdomAreaMain Street, U.S.A.StatusRemovedOpening dateOctober 1, 1971Closing dateJune 1998Replaced byFilm Preview Center Tokyo DisneylandAreaWorld BazaarStatusRemovedOpening dateApril 15, 1983Closing dateOctober 20, 2002Replaced byGrand Emporium Ride statisticsAttraction typeMovie theaterDesignerWED EnterprisesThemeTur…

2004 Eeuwen: 20e eeuw · 21e eeuw · 22e eeuw Decennia: 1990-1999 · 2000-2009 · 2010-2019 Jaren: << · < · 2003 · 2004 · 2005 · > · >> Maanden: jan · feb · mrt · apr · mei · jun jul · aug · sep · okt · nov · dec Jaartelling in verschillende culturen Ab urbe condita: 2757 MMDCCLVII Armeense jaartelling: 1453 – 1454ԹՎ ՌՆԾԳ – ՌՆԾԴ Chinese jaartelling: …

Kembali kehalaman sebelumnya

Lokasi Pengunjung: 3.82.3.33