Haskell开始
一、安装
操作系统为centos,为了安装最新的Haskell编译器,不使用命令
yum install ghc
1.安装ghc
使用wget下载ghc,命令如下(注意系统是centos6.7)
$ wget http://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-x86_64-centos67-linux.tar.bz2
如果需要移动安装包位置,比如将安装包移动到用户home目录下的bin目录中
$ mv ghc-7.10.-x86_64-centos67-linux.tar.bz2 ./bin
进入bin目录
cd ./bin
解压缩包
tar -xjf ghc-7.10.-x86_64-centos67-linux.tar.bz2
进入解压后的目录并执行
$ cd ghc-7.10.3
$ ./configure
如果出现错误
checking for path to top of build tree... utils/ghc-pwd/dist/build/tmp/ghc-pwd: error while loading shared libraries: libgmp.so.: cannot open shared object file: No such file or directory
configure: error: cannot determine current directory
说明需要安装库libgmp.so.3,可以执行如下命令进行下载包
$ wget ftp://rpmfind.net/linux/centos/6.7/os/x86_64/Packages/gmp-4.3.1-7.el6_2.2.i686.rpm
进入到下载目录并执行
rpm -ivh gmp-4.3.-.el6_2..x86_64.rpm
就可以安装到/usr/lib64目录下,执行如下命令进行查看结果
$ cd /usr/lib64
$ ls | grep libgmp
然后切换到ghc包目录并执行
$ ./configure
$ make
$ make install
二、源码阅读
1. 阅读Haskell Report
2. 使用hoogle
Haskell开始的更多相关文章
- Haskell 函数式编程快速入门【草】
什么是函数式编程 用常规编程语言中的函数指针.委托和Lambda表达式等概念来帮助理解(其实函数式编程就是Lambda演算延伸而来的编程范式). 函数式编程中函数可以被非常容易的定义和传递. Hask ...
- Haskell Platform (windows)
一.下载地址:https://www.haskell.org/platform/windows.html Haskell Platform 整合了 Glasgow Haskell Compiler,W ...
- Haskell 参考资料
1.Haskell 中文社区:www.haskellcn.org 2.Haskell 官网: www.haskell.org 3.Haskell 函数查询:www.haskell.or ...
- 函数式编程语言LISP,python,haskell,clojure
说说我自己的背景吧,我是个半吊子的程序员,做任何事情喜欢比较了解然后再尝试,我接触过很多语言,大多数都把它当成工具来使用 我现在的工作大部分主要在于数据挖掘与机器学习方面,也学习web开发,我第一个拿 ...
- Haskell 笔记 ③
①循环?NO!请递归思考问题! 手艹一个求列表中最大值代码,C语言中习惯性for扫一下比较出最大值.但是可以用递归! maximum'::(Ord a)=>[a]->a maximum' ...
- haskell中的cps
cps全称叫continuation passing style,简要来讲就是告诉函数下一步做什么的递归方式,由于普通递归有栈溢出的问题,而cps都是尾递归(tail recursion),尾递归则是 ...
- haskell中的monad
monad本意是单子.在haskell中,第一个接触的基本都是IO action,通过把IO动作包装起来我们能很方便的与现实世界进行数据交换.但其实monad的用途不止如此,monad还能讲一系列操作 ...
- haskell中的let和where
haskell中有两种定义局部变量的方法let和where,方法分别如下 roots a b c = ((-b + det) / (a2), (-b - det) / (a2)) *a*c) a2 = ...
- haskell io模块
haskell中的io模块主要是用于读写文件屏幕的,通过import IO来导入 其中有如下常用定义 data IOMode = ReadMode | WriteMode | AppendMode | ...
- haskell中的do
在haskell中,有一个do的语句专门用来做一些不那么“干净”的事情,比如读写都需要用do来开头 一开始以为do的作用是做monad,后来发现是错误的,其实do做的事情是包裹一个顺序操作 比如在如下 ...
随机推荐
- BitMap - leetcode [位运算]
136. Single Number 因为A XOR A = 0,且XOR运算是可交换的,于是,对于实例{2,1,4,5,2,4,1}就会有这样的结果: (2^1^4^5^2^4^1) => ( ...
- Tiny6410之NAND FLASH驱动
一.NAND FLASH的特点 S3C6410的NAND FLASH控制器有如下特点 1.自导入模式:复位后,引导代码被送入到8KB的STEPPINGSTONE中,引导代码移动完毕,引导代码将在STE ...
- .net XML操作
一.常规介绍 //初始化一个xml对象 XmlDocument xml = new XmlDocument(); //加载xml文件 xml.Load("文件路径"); //读取指 ...
- CodeForces 709C Letters Cyclic Shift
贪心. 肯定是两个$a$之间的那些字符都$-1$,没有$a$就全部$-1$.如果输入的串全是$a$,那么把最后一个$a$改成$z$. #pragma comment(linker, "/ST ...
- js---疑点代码段解析
function count() { var arr = []; for (var i=1; i<=3; i++) { console.log("iii---"+i); ar ...
- IOS多线程加锁
注意:加锁位置不同产生结果不同 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { / ...
- JS中的Replace只会替换第一处解决办法
解决这个问题只需将replace的第一个参数使用正则的方式即可,代码如下: var reg = new RegExp(",","g"); var str = & ...
- jsp中,对window对象的简单总结
window的对象有: alert(message) 弹出一个警示对话框confirm(message) 弹出一个确认对话框prompt(message,defaultmessage) 弹出一个提示对 ...
- 小例子解释wait与notify的区别
系统慢可能有很多种原因,硬件资源不足,语句不优化,结构设计不合理,缺少必要的运维方式.所有的这些问题都可以在阻塞与等待中看出端倪,发现并解决问题. 首先是下载开发工具,磨刀不误砍材工.点此下载 这是一 ...
- abap 一些小知识点的总结
创建包含结构或表的内表: DATA: BEGIN OF it_tab. INCLUDE TYPE/STRUCTURE name. name:结构名或者表名 DATA: num TY ...