今天下午写了一个Haskell的hello world,结果不能运行:
module test(main) where
import System.IO
data Shape = Circle Float Float Float | Rectangle Float Float Float Float
surface :: Shape -> Float
surface (Circle _ _ r) = pi * r ^ 2
surface (Rectangle a b c d) = (a-c) * (b-d)
main :: IO()
main = do
print $ surface $ Circle 2.2 3.0 2.5
print $ surface $ Rectangle 1 2 4 9
编译报错
ghc -o test test.hs
test.hs:1:8: parse error on input ‘test’
貌似是因为module名字首字母要大些。
改了之后,在运行。还是有问题,这次是警告。
引用
ghc -o test test.hs
[1 of 1] Compiling Test ( test.hs, test.o )
Warning: output was redirected with -o, but no output will be generated
because there is no Main module.
我比较了网上的hello world例子发现,和我的不同之处在于它的没有定义module。
去掉module那行试一下
引用
[1 of 1] Compiling Main ( test.hs, test.o )
Linking test ...
这次正常了。
运行:
引用
./test
19.634954
21.0
最终版本的代码:
import System.IO
data Shape = Circle Float Float Float | Rectangle Float Float Float Float
surface :: Shape -> Float
surface (Circle _ _ r) = pi * r ^ 2
surface (Rectangle a b c d) = (a-c) * (b-d)
main :: IO()
main = do
print $ surface $ Circle 2.2 3.0 2.5
print $ surface $ Rectangle 1 2 4 9
分享到:
相关推荐
第一,它是纯函数性的。如果一个函数在不同的环境下以相同的参数调用两次,那么这两次的返回值是完全相同的。第二,Haskell提供了一个结合了诸如类型类(typeclasses)和通用代数数据类型(generalized algebraic ...
第一个 Rust 库包含在fact.rs并实现了一个简单的阶乘,更容易包装; 第二个包含在point.rs ,演示了在 Rust 中分配内存,将其传递给 Haskell,使用包装的 Rust 函数来操作它,最后允许 Haskell 的 GC 回调到 Rust ...
HUnit-测试-生成器一个小的 Haskell 程序,它读取一个非常简单的 DSL 并生成适当的 HUnit 测试动机由于 HUnit 测试很难编写,而且 Haskell 初学者也不太容易理解,因此我决定使用一种更简单的“语言”来编写测试。...
Haskell-1 使用Haskell进行函数式编程 课程计划 这是程序草案。 它可以改变。 函数式编程和Haskell语言简介。 基本概念和语法。 纯粹的功能和不变性。 从函数开始,键入签名并使用递归解决问题。 类型和类型类...
注意:这是我在Haskell中尝试的第一个项目。 因此,有很多很多有缺陷的设计选择以及可以更好地使用monad等的实例。我的torrent客户(位于)是一个更新(尽管不完整)的项目。 向前 该项目是作为范德比尔特大学操作...
用Haskell编写的AC编译器从Nora Sandler的文章中借助Tsoding出色的视频细节我的目标是学习有关函数式编程的更多信息,Haskell在此领域占主导地位,以及有关编译器,C和汇编的更多信息。第1部分:完成!第2部分:完成...
这是我的第一个 Haskell 程序,第一次 Haskell 调试会话,第一次使用 monad 和 monad 转换器,第一次解析器实现,第一次接触 SASL,第一次接触 SK 约简机和 lambda 演算 它(仍然)可能对遵循相同学习路径的其他人...
哈斯克尔 作者:Nicolas Broeking和Joshua Rahm ...####第1章:功能语言简介 ####第2章:Haskell简介 ####第3章:类型系统 ####第4章:进阶 ####结论 [下一页](./ presentation / FunctionalProgramming.md)
inline-rust:在Haskell程序中使用Rust内联代码段
Haskell 中的软件设计和架构关于如何在 Haskell 中构建实际应用程序的一组结构化材料。目录最佳实践和指南例外风格指南展示项目和代码组织示例生产中的 Haskell。 成功案例、经验报告会谈Haskell 生态系统和可访问性...
介绍这是一个用Haskell编写的程序,该程序将加载图像,并使用特殊公式将图像转换为ASCII艺术作品,以使其看起来与原始图像极为相似。要求: 您将需要安装软件包“ bmp-1.2.6.3”。指示: 首先,通过在图像上调用...
科罗拉多州 这是我在 Haskell 中的第一个程序。 它是作为练习而创建的。 受 ruby 中的colorize gem 启发: :
可以使用命令Husk启动Husk程序,将第一个参数传递给程序源,然后将第一个参数传递给程序输入。 运行时,Husk将推断出程序和输入的可能类型,将它们统一,然后生成具有固定类型的Haskell程序,该程序将立即执行。 ...
在论文中,我们定义了一个可执行语义(图 17)和一个 QuickCheck 属性(第 6.6 节)。 此存储库中的代码支持以下说法:此属性适用于超过 100000 个随机生成的表达式,每个表达式最多 1000 个子表达式。
从第一原则构建现代函数式编译器。 () 1917年 10 基于 WAI 的 RESTful Haskell Web 框架。 1844 11 Haskell 到 JavaScript 编译器,基于 GHC 1820 12 格拉斯哥 Haskell 编译器的镜像。 补丁最好提交到 GHC 的 ...
在线大纲第1部分Haskell的主要功能价值观和职能内置类型,函数类型,类型推断运营商列表,惰性评估,元组傻瓜第2部分多态类型,类型类约束内置类型类,类型推断咖喱,高阶功能处理清单定义函数,条件表达式,防护...
第一种模式是命令查询责任隔离(CQRS),它用于将应用程序中进行写或更新的部分与应用程序中对数据执行查询的部分分开。 Martin Fowler进行了如果您不 ,我建议您阅读。 第二种模式是事件源(ES),它是将应用程序...
为了生成数据,我使用了一个bash脚本: #! /bin/bash seq 10 | awk -v S=0 -v E=99 ' BEGIN {srand()} {for (i=0; i<10> test.data 建造 要构建应用程序,第8 chapter8 : make build 运行主 要执行第8 chapter8 ...
之所以称为V2是因为第一个版本是我的Gloss尝试。编译与执行stack build应该做到这一点! 我不确定如何使用cabal编译该项目,因为我并不真正使用它,但是欢迎请求请求! 要执行,只需运行stack exec HetrisV2-exe 。...
将支持多个前端,但由于时间限制,第一个支持将基于文本。 设计 该设计文档正在进行中,欢迎以问题的形式提出想法。 PokemonArena将由客户端和服务器组成。 服务器将连接到数据库并保存一个持久的世界。 客户端...