Haskell

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(图集)
(现状)
 
(未显示1个用户的33个中间版本)
第7行: 第7行:
 
[[文件:Haskell-Logo.png|right]]
 
[[文件:Haskell-Logo.png|right]]
  
Haskell,一门通用型纯粹函数式编程语言。其特性有:静态类型,高阶函数,多态,型别类,以及单子式副作用等。Haskell 编译器几乎在每一种计算机上都可以运行。
+
Haskell,一门开源通用型纯粹函数式编程语言(Apache v2),其特性有:静态类型,高阶函数,多态,型别类,以及单子式副作用等,Haskell 编译器几乎在每一种计算机上都可以运行。
 +
 
 +
Haskell 具有“证明即程序、命题为类型”的特征。
  
 
C++11 的 Concepts、C# 的 LINQ、Java 中的泛型、Scala、CoffeeScript、F#、Python、Swift 等语言都从中受到启发和得到灵感。
 
C++11 的 Concepts、C# 的 LINQ、Java 中的泛型、Scala、CoffeeScript、F#、Python、Swift 等语言都从中受到启发和得到灵感。
第16行: 第18行:
  
 
[https://www.futurelearn.com/info/courses/functional-programming-haskell/0/steps/27218 Brief History of Haskell] [https://www.futurelearn.com/courses/functional-programming-haskell Functional Programming in Haskell: Supercharge Your Coding]
 
[https://www.futurelearn.com/info/courses/functional-programming-haskell/0/steps/27218 Brief History of Haskell] [https://www.futurelearn.com/courses/functional-programming-haskell Functional Programming in Haskell: Supercharge Your Coding]
 +
 +
==Why Haskell==
 +
[https://serokell.io/blog/10-reasons-to-use-haskell 10 Reasons to Use Haskell]
  
 
==版本==
 
==版本==
支持的语言
+
[https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status GHC Status]
*GHC2021
+
 
*Haskell2010
+
支持的语言:
*Haskell98
+
*[https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0380-ghc2021.rst GHC2021]
 +
*[https://www.haskell.org/onlinereport/haskell2010/ Haskell2010] [http://haskell.org/definition/haskell2010.pdf Haskell 2010 Language Report]
 +
*[https://www.haskell.org/onlinereport/ Haskell98]
  
 
==现状==
 
==现状==
 +
*[https://taylor.fausak.me/2022/11/18/haskell-survey-results/ 2022 State of Haskell Survey Results]
 
*[https://taylor.fausak.me/2021/11/16/haskell-survey-results/ 2021 State of Haskell Survey results]
 
*[https://taylor.fausak.me/2021/11/16/haskell-survey-results/ 2021 State of Haskell Survey results]
 
*[https://taylor.fausak.me/2020/11/22/haskell-survey-results/ 2020 State of Haskell Survey results]
 
*[https://taylor.fausak.me/2020/11/22/haskell-survey-results/ 2020 State of Haskell Survey results]
第52行: 第60行:
 
*[https://github.com/ghc-proposals/ghc-proposals GHC Proposals]
 
*[https://github.com/ghc-proposals/ghc-proposals GHC Proposals]
 
*[https://gitlab.haskell.org/ghc GHC GitLab] [https://gitlab.haskell.org/ghc/ghc/-/wikis/team-ghc GHC Team] [https://ghc.gitlab.haskell.org/ghc/doc/ GHC Documentation]
 
*[https://gitlab.haskell.org/ghc GHC GitLab] [https://gitlab.haskell.org/ghc/ghc/-/wikis/team-ghc GHC Team] [https://ghc.gitlab.haskell.org/ghc/doc/ GHC Documentation]
*GHC 的 LLVM 部分衍生自 Essential Haskell Compiler(EHC) 项目, [https://llvm.org/pubs/2008-06-CompilingHaskelltoLLVM.pdf Compiling Haskell to LLVM]  
+
*GHC 的 LLVM 部分衍生自 Essential Haskell Compiler(EHC) 项目,[https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/backends GHC Backends] [https://llvm.org/pubs/2008-06-CompilingHaskelltoLLVM.pdf Compiling Haskell to LLVM]  
  
 
已安装的 ghc 版本,使用了 [https://docs.haskellstack.org/en/stable/README/ Haskell Tool Stack]
 
已安装的 ghc 版本,使用了 [https://docs.haskellstack.org/en/stable/README/ Haskell Tool Stack]
第79行: 第87行:
 
  ghci> factorial 50
 
  ghci> factorial 50
 
  30414093201713378043612608166064768844377641568960512000000000000
 
  30414093201713378043612608166064768844377641568960512000000000000
 +
ghci> :t 3
 +
ghci> :i Int
  
 
==Package==
 
==Package==
第115行: 第125行:
 
==语言==
 
==语言==
 
*[https://wiki.haskell.org/Applications_and_libraries/Compilers_and_interpreters Compilers and interpreters] [https://wiki.haskell.org/Foreign_Function_Interface Foreign Function Interface (FFI)]
 
*[https://wiki.haskell.org/Applications_and_libraries/Compilers_and_interpreters Compilers and interpreters] [https://wiki.haskell.org/Foreign_Function_Interface Foreign Function Interface (FFI)]
 +
*[[Agda]]
 
*[http://elm-lang.org/ Elm语言] [https://github.com/elm/compiler Elm Compiler]
 
*[http://elm-lang.org/ Elm语言] [https://github.com/elm/compiler Elm Compiler]
 +
*[https://www.mathstat.dal.ca/~selinger/quipper/ Quipper: A Scalable Quantum Programming Language]
 
*[https://www.hamler-lang.org/ Hamler] Haskell-style functional programming language running on [[Erlang VM]].
 
*[https://www.hamler-lang.org/ Hamler] Haskell-style functional programming language running on [[Erlang VM]].
 
*[https://github.com/typelead/eta Eta] Modern Haskell on the [[JVM]]
 
*[https://github.com/typelead/eta Eta] Modern Haskell on the [[JVM]]
第126行: 第138行:
 
*[https://github.com/lambdacube3d/lambdacube-compiler LambdaCube] [[Compiler]] for LambdaCube 3D
 
*[https://github.com/lambdacube3d/lambdacube-compiler LambdaCube] [[Compiler]] for LambdaCube 3D
  
==用户==
+
==用户服务商==
 
[https://wiki.haskell.org/Haskell_in_industry Haskell in industry]
 
[https://wiki.haskell.org/Haskell_in_industry Haskell in industry]
 +
*[https://well-typed.com/ Well-Typed] The Haskell Consultants
  
 
==STEM==
 
==STEM==
 +
*STEM 教育可分为三部分:入门、进阶和实践,参考:[https://zh.wikibooks.org/wiki/Haskell Haskell :: 带类型的函数式编程]
 +
*[https://docs.huihoo.com/haskell/functional-programming/ Functional Programming] 推荐
 +
*[https://github.com/sdiehl/write-you-a-haskell Write You a Haskell] Building a modern functional compiler from first principles.
 
*[https://github.com/wimvanderbauwhede/HaskellMOOC Functional Programming in Haskell]
 
*[https://github.com/wimvanderbauwhede/HaskellMOOC Functional Programming in Haskell]
 +
*[https://github.com/sdiehl/wiwinwlh What I Wish I Knew When Learning Haskell]
 +
*[https://blog.ocharles.org.uk/blog/pages/2014-12-01-24-days-of-ghc-extensions.html 24 Days of GHC Extensions]
  
 
==文档==
 
==文档==
第141行: 第159行:
 
*[http://docs.huihoo.com/cufp/2013/Common-Pitfalls-of-Functional-Programming-and-How-to-Avoid-Them-A-Mobile-Gaming-Platform-Case-Study.pdf Common Pitfalls of Functional Programming and How to Avoid Them:A Mobile Gaming Platform Case Study]
 
*[http://docs.huihoo.com/cufp/2013/Common-Pitfalls-of-Functional-Programming-and-How-to-Avoid-Them-A-Mobile-Gaming-Platform-Case-Study.pdf Common Pitfalls of Functional Programming and How to Avoid Them:A Mobile Gaming Platform Case Study]
 
*[http://docs.huihoo.com/cufp/2013/Enterprise-Scheduling-with-Haskell.pdf Enterprise Scheduling with Haskell]
 
*[http://docs.huihoo.com/cufp/2013/Enterprise-Scheduling-with-Haskell.pdf Enterprise Scheduling with Haskell]
 +
*[https://ucsd-progsys.github.io/liquidhaskell-tutorial/ Programming with Refinement Types] An Introduction to LiquidHaskell
 +
*[https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/injective-type-families-acm.pdf Injective Type Families for Haskell]
  
 
==图书==
 
==图书==
第146行: 第166行:
 
*[https://github.com/huangz1990/real-world-haskell-cn 《Real World Haskell》中文翻译项目]
 
*[https://github.com/huangz1990/real-world-haskell-cn 《Real World Haskell》中文翻译项目]
 
*[http://learnyouahaskell.com/chapters Learn You a Haskell for Great Good!]
 
*[http://learnyouahaskell.com/chapters Learn You a Haskell for Great Good!]
 +
*[https://zh.wikibooks.org/wiki/Haskell Haskell :: 带类型的函数式编程] 维基教科书(Wikibooks)
  
 
==图集==
 
==图集==
第152行: 第173行:
 
image:stack-dependency-visualization.png|依赖可视化
 
image:stack-dependency-visualization.png|依赖可视化
 
image:nixos-stack.png|Nix Ecosystem
 
image:nixos-stack.png|Nix Ecosystem
 +
image:Haskell-GHC.jpeg|GHC编译器
 
image:Haskell-GHC-compiler-pipeline.png|GHC编译流水线
 
image:Haskell-GHC-compiler-pipeline.png|GHC编译流水线
 +
image:Haskell-GHC-lightweight-concurrency.png|GHC轻量级并发
 +
image:Haskell-Typeclassopedia-diagram.png|Typeclassopedia
 +
image:Port-and-Adapter-architecture.png|端口和适配器架构
 
</gallery>
 
</gallery>
  
第162行: 第187行:
 
*[https://downloads.haskell.org/ Haskell下载]
 
*[https://downloads.haskell.org/ Haskell下载]
 
*[http://code.haskell.org/ code.haskell.org]
 
*[http://code.haskell.org/ code.haskell.org]
*[http://docs.huihoo.com/haskell/ Haskell开放文档]
+
*[https://docs.huihoo.com/haskell/ Haskell开放文档]
*[http://docs.huihoo.com/haskell/ghc/users-guide/ GHC User's Guide]
+
*[https://docs.huihoo.com/haskell/ghc/ GHC 文档] [https://downloads.haskell.org/ghc/latest/docs/ GHC 官方]
*[http://docs.huihoo.com/haskell/ghc/libraries/ GHC Standard Libraries]
+
 
*[http://zh.wikibooks.org/wiki/Haskell 维基教科书:Haskell]
 
*[http://zh.wikibooks.org/wiki/Haskell 维基教科书:Haskell]
 
*[https://phabricator.haskell.org/ Phabricator @ Haskell.org]
 
*[https://phabricator.haskell.org/ Phabricator @ Haskell.org]
第177行: 第201行:
 
[[category:lambda]]
 
[[category:lambda]]
 
[[category:haskell]]
 
[[category:haskell]]
 +
[[category:Huihoo Foundation]]

2023年4月23日 (日) 04:02的最后版本

Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 Haskell Thanks, Wikipedia.

Haskell

Haskell-logo.png

目录

[编辑] 简介

Haskell-Logo.png

Haskell,一门开源通用型纯粹函数式编程语言(Apache v2),其特性有:静态类型,高阶函数,多态,型别类,以及单子式副作用等,Haskell 编译器几乎在每一种计算机上都可以运行。

Haskell 具有“证明即程序、命题为类型”的特征。

C++11 的 Concepts、C# 的 LINQ、Java 中的泛型、Scala、CoffeeScript、F#、Python、Swift 等语言都从中受到启发和得到灵感。

Haskell 在工业界有不少应用,最集中的是在金融界的高频交易。

更多应用:Haskell ecosystem

Brief History of Haskell Functional Programming in Haskell: Supercharge Your Coding

[编辑] Why Haskell

10 Reasons to Use Haskell

[编辑] 版本

GHC Status

支持的语言:

[编辑] 现状

[编辑] 功能

Haskell GHC versus Java/F#/OCaml fastest programs

[编辑] 指南

[编辑] OS X

OS X安装包安装后,会创建:

/Library/Frameworks/GHC.framework
/Library/Haskell

运行 /Library/Haskell/bin/activate-hs

Haskell now set to:
   GHC      7.10.2
   Arch.    x86_64
   Platform 7.10.2-a

运行 /Library/Haskell/bin/cabal

/Users/huihoo/.cabal/config
/Users/huihoo/Library/Haskell/bin

vim ~/.bash_profile

export PATH="$HOME/Library/Haskell/bin:$PATH"

[编辑] GHC

已安装的 ghc 版本,使用了 Haskell Tool Stack

ls $(stack path --programs)/*.installed
/home/huihoo/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7.installed
/home/huihoo/.stack/programs/x86_64-linux/ghc-tinfo6-8.8.4.installed

[编辑] ghci

Try Haskell

输入ghci进入GHC交互模式

ghci> [2,4..20]
[2,4,6,8,10,12,14,16,18,20]
ghci> [x * 2 | x <- [1..10]] // 列表推导式(list comprehension)
[2,4,6,8,10,12,14,16,18,20]
ghci> [x | x <- [10..20], x /= 13, x /= 15, x /= 19] // 多个谓词(predicate)
[10,11,12,14,16,17,18,20]
ghci> [0.1, 0.3 .. 1]
[0.1,0.3,0.5,0.7,0.8999999999999999,1.0999999999999999]
ghci> [x | x <- [50..100], x `mod` 7 == 3]
[52,59,66,73,80,87,94]

vim factorial.hs // 创建一个函数并保存文件

factorial :: Integer -> Integer
factorial n = product [1..n]
ghci> :l factorial
ghci> factorial 50
30414093201713378043612608166064768844377641568960512000000000000
ghci> :t 3
ghci> :i Int

[编辑] Package

Cabal

[编辑] 项目

Hamler-logo.png
Postgrest-request-flow.png

Awesome Haskell Awesome.png

Haskell-ide.png

[编辑] 语言

[编辑] 用户服务商

Haskell in industry

[编辑] STEM

[编辑] 文档

[编辑] 图书

[编辑] 图集

[编辑] 链接

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱