当前位置: 首页 > news >正文

Haskell 差点儿无痛苦上手指南

趁着自己重装Linux 虚拟机的机会,把安装 haskell 的过程记录一下,顺便帮那些还犹豫徘徊在haskell门外的读者入门。

 

基本概念:

 

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能够编译生成高效的可运行程序。

 

 

Haskell Platform

 

Haskell Platform 是一个打包的haskell 开发环境,包括GHC以及非常多第三方开发库,以及cabal 包管理器等。

 

Cabal 又是什么?

 

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

要安装一个第三方库,仅仅须要:  cabal install lib-name 就能够了。 差点儿就这么简单。

 

怎么安装 Haskell 的第三方库?

 

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

 

===================

 

安装过程

 

(本文基于 Ubuntu 9.10 , 对于其它基于 apt-get 的Linux也适用。)

 

1. 安装依赖库

 

sudo apt-get install libedit2 libedit-dev freeglut3-dev libglu1-mesa-dev libgmp3-dev

 

2. 下载 GHC

 

在 GHC下载页面 , 选择适合的版本号下载(x86, x86_64) ,比例如以下载 x86版本号 Linux:

 

wget http://haskell.org/ghc/dist/6.12.1/ghc-6.12.1-i386-unknown-linux-n.tar.bz2

 

3. 安装 ghc

 

$ tar jxvf ghc-6.12.1-i386-unknown-linux-n.tar.bz2

$ cd ghc-6.12.1

$ ./configure

$ sudo make install

 

安装完,測试下:

 


4. 安装 Haskell Platform

 

下载: wget http://hackage.haskell.org/platform/2010.1.0.0/haskell-platform-2010.1.0.0.tar.gz

解压缩, ./configure , make,   make install

 

make 的过程可能比較长,要编译一大堆的第三方库。

 

5. Cabal 的配置

 

安装完 Haskell Platform 后,会提示用户进行 cabal update , 就是更新下库的文件夹列表:

 

$ cabal update

 

要安装一个库,首先在 HackageDB 上找到须要的库,然后执行 cabal install 就可以:

 

 

 

=====================

 

Hello World

 

说了这么久,最终到了我最喜欢的 Hello World 阶段了。

 

GHCi  这个交互环境

 

haskell 程序既能够解释运行也能够编译运行,这在开发过程中是非常方便用来调试的。

 

 

 

> print "hello world"

"hello world"

 

看上去非常easy,没啥出奇的东西。以下尝试些有意思的东西:

 

 

 

编译程序

 

以下来写一个完整的程序,而且编译成可运行文件, 首先编写 hello.hs 文件,内容例如以下,用 ghc 编译。

 

 

 

 

 


Haskell 的编辑环境

 

隆重推荐 Emacs  ,Emacs 中的 Haskell-mode 在编敲代码中,帮助进行缩进、语法高亮等,配合 unicode 显示,能够得到很美丽的效果。

另开一篇具体解释emacs 环境吧。


转载于:https://www.cnblogs.com/blfshiye/p/4344383.html

相关文章:

  • [转] AC自动机详解
  • JVM调优总结(四)-垃圾回收面临的问题
  • Android代码报错:setContentView(R.layout.activity_main)
  • ccf 门禁系统
  • Swing学习总结
  • VB - 变量
  • 图片压缩,别问我是谁,请叫我雷锋
  • C++单例模式实例
  • Action(8):Error -27728:Step download timeout(120 seconds)has expired when downloading
  • 千位数减百位数不退位 区间代换
  • C# 第三次作业
  • Maven常用命令总结
  • ecshop开发日志之手机端虚拟商品自动发货
  • C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现
  • WCF-终结点之消息路由示例
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • es6(二):字符串的扩展
  • Java 内存分配及垃圾回收机制初探
  • JavaScript的使用你知道几种?(上)
  • Laravel核心解读--Facades
  • Redis学习笔记 - pipline(流水线、管道)
  • Vue实战(四)登录/注册页的实现
  • Yii源码解读-服务定位器(Service Locator)
  • 当SetTimeout遇到了字符串
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 那些被忽略的 JavaScript 数组方法细节
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • Spring Batch JSON 支持
  • 积累各种好的链接
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​水经微图Web1.5.0版即将上线
  • # Apache SeaTunnel 究竟是什么?
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (SpringBoot)第二章:Spring创建和使用
  • (二)fiber的基本认识
  • (分布式缓存)Redis哨兵
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (论文阅读40-45)图像描述1
  • (生成器)yield与(迭代器)generator
  • (转)Linq学习笔记
  • (转)Sql Server 保留几位小数的两种做法
  • .net core 6 集成和使用 mongodb
  • .NET Micro Framework初体验
  • .Net Winform开发笔记(一)
  • .net6Api后台+uniapp导出Excel
  • .net访问oracle数据库性能问题
  • .NET分布式缓存Memcached从入门到实战
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET下的多线程编程—1-线程机制概述
  • .NET项目中存在多个web.config文件时的加载顺序
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛