我正在熟悉Haskell,目前正在为我在网上找到的一些课程写第三篇“作业”。需要在名为Golf.hs
的文件中以* {1}}开头提供家庭作业*。一切都很好,这似乎是语言中的惯用语。
但是,我习惯于以module Golf where
结尾的python模块,其中可以对模块进行测试,包括在模块开发期间。if __name__ == "__main__:
对这种方法似乎不满意:
ghc
即使使用$ ghc Golf.hs -o Golf && ./Golf
<no location info>: error:
output was redirected with -o, but no output will be generated
似乎是常态,我也想了解使程序工作的原始命令行调用。 cabal
似乎是测试新编写的代码的另一种方法,但重新加载模块是peta。使用预定义的测试数据编写函数调用的最简单方法是什么,并在ghci
结果上观察?
* - 对于实际参加课程的学生,我只是按照讲义并努力完成作业
Golf2.hs:
stdout
输出:
{-# OPTIONS_GHC -Wall #-}
module Golf2 where
foo :: Int -> Int
foo n = 42
main = putStr "Hello"
答案 0 :(得分:3)
ghci
是一个非常有用的学习工具!
当你只有一个模块时,它也很容易。开始:l Golf.hs
,然后foo 342
。这将加载您的文件。然后,您就可以输入main
并查看&#34; 42&#34;显示,或:reload
并看到&#34;你好&#34;。您可以编辑该文件,然后使用:r
或ghci
加载更改。 Real World Haskell有一个很好的介绍,使用ghc
。
这比使用cabal
或{{1}}等工具更容易,而且在您学习基础知识时真正需要的是。
答案 1 :(得分:3)
如果您想使用import java.util.*;
public class SortName implements Comparable<Person>{
public int compareTo(Person p2){
return this.getName().compareTo(p2.getName());
}
}
- 编译器(而不是其交互式变体ghc
),您可以使用-main-is
选项。
来自文档:
ghci
Haskell中的常规规则是您的程序必须在模块
-main-is⟨thing⟩
中提供主函数。测试时,通常很方便 更改哪个函数是“主”函数,Main
标志允许 你这样做。-main-is
可以是以下之一:
- 小写标识
⟨thing⟩
。 GHC假设主要功能是foo
。- 模块名称
Main.foo
。 GHC假设主要功能是A
。- 限定名称
A.main
。 GHC假设主要功能是A.foo
。
所以,试试A.foo
。