懂一点Haskell(一)

作者: 九十九度中 | 来源:发表于2019-01-21 23:57 被阅读2次

Getting Started

当我们接触一门新语言,第一件事就是写出相应版本的Hello world。那么,让我们开始吧!

-- hello.hs my first haskell file
main = do
    putStrLn "Hello world"

想要运行这个简单的程序,你需要一个编译器。去官方网站 https://www.haskell.org/platform/ 下载haskell-platform,安装。现在,你已经完全准备就绪了!

$ ghc hello.hs
[ 1 of 1 ] Compiling Main
Linking hello ...

如果编译成功,GHC会创建以下三个文件:

  • hello (windows 上为hello.exe)
  • hello.hi
  • hello.o

学过C++的对这个过程应该不会感到陌生,编译然后链接,这是编译型语言生成机器可执行文件的一般过程。如果不太明白也没有关系,现在只需要知道hello就是最后生成的可执行文件就行。你可以执行这个文件。

$ ./hello
Hello world

每一个编译的Haskell程序都需要有一个main,就和C++中的int main()或python中的__main__是一个作用。是程序开始运行的切入点。

GHCi

神奇的是,haskell还为我们提供了一个GHC的交互接口,用起来就和python等解释型语言一样。你可以这样打开它:

$  ghci
 Prelude> 

你可以把它当作计算器用。

Prelude> 1 + 1
2
Prelude> x = 2 + 2
Prelude> x
4
Prelude> f x = x * 2
Prelude> f 4
8

-- GHCi的早期版本定义变量和函数可能需要使用let关键字

Prelude> let x = 2 + 2
Prelude> x
4
Prelude> let f x = x * 2
Prelude> f 4
8

Prelude是GHCi预先加载的一个文件,里面包含常用的函数和变量。你也可以把你自己的文件加载进去以进行交互。有两种方法可以做到:

  • $ ghci hello.hs 终端提示符下操作
  • Prelude> :l hello.hs Prelude提示符下操作。

导入成功后,你就可以调用你文件里的函数了。(需要说明的是,作为导入GHCi的文件不需要必须包含main,编译文件时才作此要求。)

Prelude> :l hello.hs
Ok, one module loaded.
Main> main
Hello world

以后当你修改文件需要重新导入的时候只需要在Prelude提示符下:r就可以了,即reload的意思。:q退出GHCi。

相关文章

  • 懂一点Haskell(一)

    Getting Started 当我们接触一门新语言,第一件事就是写出相应版本的Hello world。那么,让我...

  • 懂一点Haskell(三)

    lists在概念上是递归的。一个lists要么为空,要么为另一个lists加上一个元素。 build a list...

  • 懂一点Haskell(二)

    函数式编程基础 编程有两种根本不同的方式,顺序式和函数式。顺序式最好的例子是C语言,它依赖于一个特定的模型,比如冯...

  • 函数式的宗教-00: 认识lisp(clojure)与haske

    总体大纲: lisp与haskell简单介绍 lisp与haskell应用领域 lisp与haskell技术分析 ...

  • monad以及monad的四条定理

    haskell的范畴是hask范畴(haskell的所有类型隶属于hask范畴),所以haskell的所有函子都是...

  • 01 数据类型

    swift中结构体在haskell中的描述 枚举类型在haskell中的描述 枚举携带类型在haskell中描述 ...

  • Haskell(一)

    Haskell每个函数和表达式都会有一个返回值 List入门 :运算符可以连接一个元素在字符串或List中 !!运...

  • nginx-haskell-module

    nginx-haskell-module 是一个 nginx 的扩展模块,有了它我们就可以用 haskell 来写...

  • 函子定律

    前段时间学了下 Haskell,看完了《Haskell 趣学指南》,刷了一些题,《Real World Haske...

  • 进入新领域时,最重要的是什么?

    互联网大神李笑来总结自己比特币成功经验的时候是这样写的: 懂一点英语,懂一点互联网,懂一点编程,懂一点数学,懂一点...

网友评论

    本文标题:懂一点Haskell(一)

    本文链接:https://www.haomeiwen.com/subject/vlskjqtx.html