【Haskell】代码运行方式
文章目录
- 编译式
- 脚本式
- runHaskell
- runghc
- 交互式
- cabal
- stack
本节用到的测试代码 hello_world.hs
:
-- hello world
{-hello world
-}main = putStrLn "hello world"
我们依然以hello world程序为例,顺别介绍下Haskell中的注释。
编译式
执行ghc hello_world.hs
,会生成hello_world.exe
、hello_world.hi
、hello_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】代码运行方式相关推荐
- Real World Haskell 第七章 I/O
几乎所有程序都是用来从外部世界收集数据,处理数据,并把处理结果返回给外部世界的.也就是说,输入和输出对于程序设计来说相当关键. Haskell的I/O系统很强大,表达能力很强也很容易使用,理解它的原理 ...
- 困扰多日的C#调用Haskell问题竟然是Windows的一个坑
最近一直被C#调用Haskell时的"尝试读取或写入受保护的内存"问题所困扰(详见C#调用haskell遭遇Attempted to read or write protected ...
- 70行Go代码打败C
[12月公开课预告],入群直接获取报名地址 12月11日晚8点直播主题:人工智能消化道病理辅助诊断平台--从方法到落地 12月12日晚8点直播:利用容器技术打造AI公司技术中台 12月17日晚8点直播 ...
- 《Haskell并行与并发编程》——第2章,第2.1节惰性求值和弱首范式
本节书摘来自异步社区<Haskell并行与并发编程>一书中的第2章,第2.1节惰性求值和弱首范式,作者[英]Simon Marlow,更多章节内容可以访问云栖社区"异步社区&qu ...
- (转) Twisted :第二十一部分 惰性不是迟缓: Twisted和Haskell
2019独角兽企业重金招聘Python工程师标准>>> 简介 在上一个部分我们对比了Twisted与 Erlang,并将注意力集中在它们共有的一些思想上.结果表明使用Erlang也是 ...
- python haskell 使用对比_性能-为什么这个Haskell程序比等效的Python程序慢得多?
作为编程挑战的一部分,我需要从stdin读取以空格分隔的整数序列(在一行上),并将这些整数的总和输出到stdout. 所讨论的序列可以包含多达10,000,000个整数. 我有两种解决方案:一种是用H ...
- JavaScript、PHP、Golang、Haskell、Elixir,哪个才是最佳编程语言?
[CSDN 编者按]哪个语言是你心中的最佳编程语言呢? 作者 | Michele Riva 译者 | 弯月 责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 以下为译文: 在过去 ...
- 70 行 Go 代码打败 C!
作为一名程序员,应当具有挑战精神,才能写出"完美"的代码.挑战历史悠久的C语言版wc命令一向是件很有趣的事.今天,我们就来看一下如何用70行的Go代码打败C语言版wc命令. 作者 ...
- Haskell大世界+思考
文章目录 基石般灵活表现自由的抽象范式 编程语言是什么? 推荐论文 大佬建议 Meta Haskell 实现 类型系统 语言抽象/模式 问题解决方案 Haskell在工业界有哪些实际的应用? 关于fp ...
最新文章
- tableau可视化数据分析60讲(十二)-过滤器详解
- [转]正确配置Linux系统ulimit值的方法
- C#设置系统日期时间格式
- 数据结构之线性表-链式存储之单链表(一)
- zynq文档阅读之EMIO和MIO的细微差别
- 从数组中取值,并且比较字符串的值
- [软件更新]卡巴斯基全功能安全软件2010简体中文版程序发布
- 二进制颜色代码大全(含图)
- 《德鲁克管理思想精要》读书笔记10 - 沟通,领导力,创新的原则
- llg的农场(farm)
- 网络分层流转---从浏览器请求到服务端响应究竟经历了什么?
- Linux deepin 15.11设置:输入时禁用触摸板
- C语言的scanf函数在visualstudio中的错误
- 视频教程-经典Vue从入门到案例到源码分析教程(含资料)-Vue
- C/C++ Linux 出错处理函数(strerror 与 perror)
- vcf通讯录格式解析
- 该项目不在XXX中。请确认该项目的位置,然后重试。之解决办法
- 一起来玩玩WebGL--第一弹
- 识破贷后资金归集——关联网络
- echarts图表没有数据的时候,在页面显示暂无数据