haskell是一门通用函数式语言,几乎可以进行任何种类的开发,包括命令行,GUI,数据库,Web.源代码可以跨平台: Linux,Mac, Windows, FreeBSD 等.

haskell特点:

函数式变成风格为主,命令式风格为辅,具有严格且方便易用的类型系统。类型检查可以帮助程序员在开发过程中避免很多错误,并辅助组织程序的结构。

haskell的开发工具

主要有 GHC, hugs 两种, 还有中 nhc 没用过就不说了。我们这里要安装的是 GHC,以及在 ghc 基础上的 Haskell Platform。

GHC:

全称: Glasgow Haskell Compiler , 包含一个高效的Haskell编译器ghc,以及一个类似 python 交互环境的解释器 ghci 。GHC可以编译生成高效的可执行程序。

GHC 可以解释执行 Haskell Script (通常是以 .hs 作为结尾),也可以编译。它还有个交互模式,你可以在里面调用 Script 里定义的函数,即时得到结果。 对于学习而言,这比每次修改都编译执行要方便的多。想进入交互模式,只要打开控制台输入ghci 即可。假设你在 myfunctions.hs 里定义了一些函数,在 ghci 中输入 :l myfunctions.hs,ghci 便会加载myfunctions.hs。之后你便可以调用你定义的函数。一旦修改了这个 .hs 文件的内容,再次执行:l myfunctions.hs 或者相同作用的 :r ,都可以重新加载该文件。我自己通常就是在 .hs 文件中定义几个函数,再到 ghci 加载,调用看看,再修改再重新加载。

Haskell Platform

Haskell Platform 是一个打包的haskell 开发环境,包含GHC以及很多第三方开发库,以及cabal 包管理器等。推荐下载这个:

http://www.haskell.org/platform/ 各个平台都有。

安装后:

Tools:

  • ghc: Compiler similar to gcc for C.
  • ghci: Interactive Haskell (REPL)
  • runhaskell: Execute a program without compiling it. Convenient but very slow compared to compiled progra

cabal是什么?

简单说就是 Ubuntu 的  apt-get, Perl 的 cpan , Python 的 easy_install , Ruby 的 gem 。 这么说明白了吧.

要安装一个第三方库,只需要:  cabal install lib-name 就可以了。 几乎就这么简单。

怎么安装 Haskell 的第三方库?

有一个 HackageDB   类似与 Perl 的cpan 的东西,这个列表包含了 Haskell 可用的第三方库。安装用同一的方式:  cabal install libname 就可以了。 大部分的库可以很方便的安装,不过一些第三方库会依赖一些特定系统的库,因此不是总能顺利安装。

更多:http://blog.csdn.net/albert_lee/article/details/5469933

haskell 开发环境配置的更多相关文章

  1. 费劲周折的Haskell开发环境搭建过程

    大概倒腾了一周才搭建好Haskell的开发环境,遇到了很多莫名其妙的问题. 首先,Haskell实在是够冷门,中文网站上的信息实在有限.仅有的一些安装教程分享都感觉不大靠谱,所以我还是直接去外网找吧. ...

  2. Python开发环境配置

    好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...

  3. Visual studio 通用开发环境配置:SDL,FFMPEG为例

    引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 下载库文件,这里假定是已经预先编译完成的. 配置库文件的包含目录(include)和库 ...

  4. AndroidStudio开发环境配置-Windows

    Android Studio开发环境配置-Windows 最近突发奇想,开始研究Android开发.开始时使用Eclipse作为开发IDE,结果各种不好使,首先下载和安装SDK,以及不同版本的Imag ...

  5. WIN10下java8的开发环境配置与第一个java程序

    一.开发环境配置 1.在官网上下载jdk-8u111-windows-x64.exe 2.运行安装包,可以自定义安装路径 3.进入环境变量设置: 计算机右键-->属性-->高级系统设置-- ...

  6. Mac下golang开发环境配置

    go语言在开发效率和运行效率中的优势让很多人青睐,所以有倾向打算转向go语言的开发. 下面介绍在Mac OS X中golang的开发环境配置. 1.安装brew brew是一个mac下的由ruby开发 ...

  7. win7 x64 vs2010 directShow开发环境配置

    近来工作需要,要用dirrectShow写一个视频播放的demo验证自己的想法.开发环境配置了好久都没有成功,最后终于弄完,现在记录下来,以后有同学遇到同样问题,可以以此法解决. windows SD ...

  8. 基于Eclipse的Hadoop应用开发环境配置

    基于Eclipse的Hadoop应用开发环境配置 我的开发环境: 操作系统ubuntu11.10 单机模式 Hadoop版本:hadoop-0.20.1 Eclipse版本:eclipse-java- ...

  9. XMPP开发环境配置

    首先配置XMPP开发环境配置需要的软件 先安装xampp-osx-1.8.3-5-installer.dmg 安装成功后launchpad里会多出一个XAMPP(其他),点开里面的manager-os ...

随机推荐

  1. [PWA] 11. Serve skeleton cache for root

    Intead of cache the root floder, we want to cache skeleton instead. self.addEventListener('install', ...

  2. PHP安全编程:网站安全设计的一些原则(转)

    深度防范 深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的. 深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域.使用过备份伞的跳伞队员可以证明有冗余安全措 ...

  3. 多队列网卡简介以及Linux通过网卡发送数据包源码解读

    http://blog.csdn.net/yanghua_kobe/article/details/7485254 首先我们看一下一个主流多队列网卡(E1000)跟多核CPU之间的关系图: 非多队列: ...

  4. 再回首,Java温故知新(七):Java基础之运算符

    常规算数运算符 包括+.-.*./.%分别对应着加.减.乘.除.取余,算数运算符所处理的两个数字必须为同种类型,如果是不同类型且无法进行自动类型转换的话必须进行强制类型转换,不过强制类型转换可能会丢失 ...

  5. 【JavaScript】我的JavaScript技术总结第一篇——编程细节

    遍历数组 for (var i=0, l=arr.length; i<l; i++) 这样写的一个好处就是让每次循环少一步获取数组对象长度的操作,数组长度越长,价值越明显. 判断变量的真假 if ...

  6. sbt 配置

    1. SBT使用local maven repository,下载的库依然放在 ~/.m2/repository 2. SBT assembly 会把依赖库打包到一个jar包,需要使用assembly ...

  7. POJ 2559 Largest Rectangle in a Histogram (单调栈或者dp)

    Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15831 ...

  8. 使用<input>标签做了两个按钮, 按钮之间间距如何去掉

    遇到的问题: 使用<input>标签做了两个按钮, 按钮之间有个间距不知道怎么去掉. 如下图: 问题解决: <input>是内联块状元素(inline-block); 内联元素 ...

  9. AES对称加密算法

    package cn.jsonlu.passguard.utils; import org.apache.commons.codec.binary.Base64; import javax.crypt ...

  10. 在ssh框架中注解方式需要注意的几个问题

    1.注解方式的时候 Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get ...