文章目录

  • 编译式
  • 脚本式
    • runHaskell
    • runghc
  • 交互式
  • cabal
  • stack

本节用到的测试代码 hello_world.hs

-- hello world
{-hello world
-}main = putStrLn "hello world"

我们依然以hello world程序为例,顺别介绍下Haskell中的注释。

编译式

执行ghc hello_world.hs,会生成hello_world.exehello_world.hihello_world.o三个文件。

脚本式

Haskell程序也可以以脚本的方式运行,方便学习和简单测试。有两个命令可以以脚本方式执行Haskell代码。

runHaskell

执行命令runHaskell hello_world.hs,输出结果。

runghc

执行命令runghc hello_world.hs,输出结果。

交互式

输入命令:l hello_world.hs加载文件,然后输入main执行代码,得到结果。

在这里甚至都不用创建文件,可以直接输入代码执行。如果需要输入多行代码,以:{开始,:}结束。以下示例来源于官网。

ghci> :{| g op n [] = n
| g op n (h:t) = h `op` g op n t
| :}
ghci> g (*) 1 [1..3]
6

有关ghc和ghci的详细文档见官网。

cabal

cabal是Haskell的包管理工具,也是编译管理工具。通过cabal init命令交互式创建工程,cable run命令运行工程。

stack

stack也是用来构建Haskell工程的工具,功能十分强大。stack new projectName创建新工程,注意projectName不要包含下划线。stack run构建并运行,stack build构建工程。


有个好消息是在本文写作的时候,GHC已经更新到9.0.1了,不过遗憾的是Haskell官网已不再提供All In One的安装包,你可以单独安装GHC和Cabal,或者参考官网的安装方式。最新版的GHC要求Cabal版本必须是2.4以上,如果你是用Vs Code作为Haskell的开发工具,还需要注意官方的Haskell插件最高只支持到8.10.4版本的GHC。更多信息及下载见GHC 官网。


【Haskell】代码运行方式相关推荐

  1. Real World Haskell 第七章 I/O

    几乎所有程序都是用来从外部世界收集数据,处理数据,并把处理结果返回给外部世界的.也就是说,输入和输出对于程序设计来说相当关键. Haskell的I/O系统很强大,表达能力很强也很容易使用,理解它的原理 ...

  2. 困扰多日的C#调用Haskell问题竟然是Windows的一个坑

    最近一直被C#调用Haskell时的"尝试读取或写入受保护的内存"问题所困扰(详见C#调用haskell遭遇Attempted to read or write protected ...

  3. ​70行Go代码打败C

    [12月公开课预告],入群直接获取报名地址 12月11日晚8点直播主题:人工智能消化道病理辅助诊断平台--从方法到落地 12月12日晚8点直播:利用容器技术打造AI公司技术中台 12月17日晚8点直播 ...

  4. 《Haskell并行与并发编程》——第2章,第2.1节惰性求值和弱首范式

    本节书摘来自异步社区<Haskell并行与并发编程>一书中的第2章,第2.1节惰性求值和弱首范式,作者[英]Simon Marlow,更多章节内容可以访问云栖社区"异步社区&qu ...

  5. (转) Twisted :第二十一部分 惰性不是迟缓: Twisted和Haskell

    2019独角兽企业重金招聘Python工程师标准>>> 简介 在上一个部分我们对比了Twisted与 Erlang,并将注意力集中在它们共有的一些思想上.结果表明使用Erlang也是 ...

  6. python haskell 使用对比_性能-为什么这个Haskell程序比等效的Python程序慢得多?

    作为编程挑战的一部分,我需要从stdin读取以空格分隔的整数序列(在一行上),并将这些整数的总和输出到stdout. 所讨论的序列可以包含多达10,000,000个整数. 我有两种解决方案:一种是用H ...

  7. JavaScript、PHP、Golang、Haskell、Elixir,哪个才是最佳编程语言?

    [CSDN 编者按]哪个语言是你心中的最佳编程语言呢? 作者 | Michele Riva 译者 | 弯月    责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 以下为译文: 在过去 ...

  8. 70 行 Go 代码打败 C!

    作为一名程序员,应当具有挑战精神,才能写出"完美"的代码.挑战历史悠久的C语言版wc命令一向是件很有趣的事.今天,我们就来看一下如何用70行的Go代码打败C语言版wc命令. 作者  ...

  9. Haskell大世界+思考

    文章目录 基石般灵活表现自由的抽象范式 编程语言是什么? 推荐论文 大佬建议 Meta Haskell 实现 类型系统 语言抽象/模式 问题解决方案 Haskell在工业界有哪些实际的应用? 关于fp ...

最新文章

  1. tableau可视化数据分析60讲(十二)-过滤器详解
  2. [转]正确配置Linux系统ulimit值的方法
  3. C#设置系统日期时间格式
  4. 数据结构之线性表-链式存储之单链表(一)
  5. zynq文档阅读之EMIO和MIO的细微差别
  6. 从数组中取值,并且比较字符串的值
  7. [软件更新]卡巴斯基全功能安全软件2010简体中文版程序发布
  8. 二进制颜色代码大全(含图)
  9. 《德鲁克管理思想精要》读书笔记10 - 沟通,领导力,创新的原则
  10. llg的农场(farm)
  11. 网络分层流转---从浏览器请求到服务端响应究竟经历了什么?
  12. Linux deepin 15.11设置:输入时禁用触摸板
  13. C语言的scanf函数在visualstudio中的错误
  14. 视频教程-经典Vue从入门到案例到源码分析教程(含资料)-Vue
  15. C/C++ Linux 出错处理函数(strerror 与 perror)
  16. vcf通讯录格式解析
  17. 该项目不在XXX中。请确认该项目的位置,然后重试。之解决办法
  18. 一起来玩玩WebGL--第一弹
  19. 识破贷后资金归集——关联网络
  20. echarts图表没有数据的时候,在页面显示暂无数据

热门文章

  1. luogu P3674 小清新人渣的本愿
  2. struts.properties在什么地方,struts.properties在哪里,怎么修改struts.properties
  3. hello:bazel
  4. 王思聪100万电脑配置——详情表(附价格)
  5. 技术学习之路漫漫其修远兮,奋力勤学吾辈将上下而求索
  6. 23.二叉搜索树的后序遍历序列
  7. Java每日一课:理解抽象类和接口的区别与联系
  8. 解析!2018软件测试官方行业报告
  9. 面试题9:菲波那切数列
  10. 如何快速判断一个文件是否为病毒 by 是昔流芳