本教程主要是面向已經(jīng)有命令式編程經(jīng)驗(yàn)(C, C++, Java, Python …) 、卻未曾接觸過(guò)函數(shù)式編程 (Haskell, ML, OCaml …)的讀者。還沒有編程基礎(chǔ)?沒關(guān)系,像你這樣的聰明小伙一定能夠?qū)W會(huì)haskell!
Haskell是一種標(biāo)準(zhǔn)化的、通用純函數(shù)式編程語(yǔ)言,有非限定性語(yǔ)義和強(qiáng)靜態(tài)類型。在Haskell中,函數(shù)是一等公民。作為函數(shù)式編程語(yǔ)言,主要控制結(jié)構(gòu)是函數(shù)。Haskell語(yǔ)言是1990年在編程語(yǔ)言Miranda的基礎(chǔ)上標(biāo)準(zhǔn)化的,并且以λ演算(Lambda-Calculus)為基礎(chǔ)發(fā)展而來(lái)。具有“證明即程序、結(jié)論公式即程序類型”的特征。這也是Haskell語(yǔ)言以希臘字母「λ」(Lambda)作為自己標(biāo)志的原因。Haskell語(yǔ)言的最主要的執(zhí)行環(huán)境是GHC。
1990年定義了Haskell的第一個(gè)版本(“Haskell 1.0”)。委員會(huì)形成了一系列的語(yǔ)言定義(1.0,1.1,1.2,1.3,1.4)。
1997年底,該系列形成了Haskell 98,旨在定義一個(gè)穩(wěn)定、最小化、可移植的語(yǔ)言版本以及相應(yīng)的標(biāo)準(zhǔn)庫(kù),以用于教學(xué)和作為將來(lái)擴(kuò)展的基礎(chǔ)。委員會(huì)明確歡迎創(chuàng)建各種增加或集成實(shí)驗(yàn)性特性的Haskell 98的擴(kuò)展和變種。
1999年2月,Haskell 98語(yǔ)言標(biāo)準(zhǔn)公布,名為《The Haskell 98 Report》。
2003年1月,《Haskell 98 Language and Libraries: The Revised Report》公布。[9] 接著,Glasgow Haskell Compiler(GHC)實(shí)現(xiàn)了當(dāng)時(shí)的de facto標(biāo)準(zhǔn),Haskell快速發(fā)展。
2006年早期,開始了定義Haskell 98標(biāo)準(zhǔn)后續(xù)的進(jìn)程,非正式命名為Haskell Prime。這是個(gè)修訂語(yǔ)言定義的不斷增補(bǔ)的過(guò)程,每年產(chǎn)生一個(gè)新的修訂版。第一個(gè)修訂版于2009年11月完成、2010年7月發(fā)布,稱作Haskell 2010。
Haskell 2010加入了外部函數(shù)接口(Foreign Function Interface,F(xiàn)FI),允許綁定到其它編程語(yǔ)言,修正了一些語(yǔ)法問(wèn)題(在正式語(yǔ)法中的改動(dòng))并廢除了稱為“n加k模式”(換言之,不再支持 fact (n+1) = (n+1) * fact n )。引入了語(yǔ)言級(jí)編譯選項(xiàng)語(yǔ)法擴(kuò)展(Language-Pragma-Syntax-Extension),使得在Haskell源代碼中可以明確要求一些擴(kuò)展功能。Haskell 2010引入的這些擴(kuò)展的名字是DoAndIfThenElse、HierarchicalModules、EmptyDataDeclarations、FixityResolution、ForeignFunctionInterface、LineCommentSyntax、PatternGuards、RelaxedDependencyAnalysis、LanguagePragma、NoNPlusKPatterns。
《php教程》
《C#教程》