我正在努力学习Haskell,而且我已经完成了所有的基础知识.但是现在我被卡住了,试图让我的头围绕着仿函数.
我读到"仿函数将一个类别转换为另一个类别".这是什么意思?
我知道这有很多问题,但是有人能给我一个关于仿函数的简单英语解释或者一个简单的用例吗?
module StackOverflow where -- yes, the source of this post compiles as is
Run Code Online (Sandbox Code Playgroud)
如果您想先玩这个(1/2向下),请跳到下面的操作以使其正常工作.如果我稍微
停下来,你会跳到我想要的东西,你只想找到我正在寻求的帮助.
:so我在我定义的命令中ghci.conf吗? :l可以用于.hs和.lhs像往常一样的文件,但使用我的手写预处理器的.so文件?Haskell支持.lhs源文件中的文字编程,有两种方式:
\begin{code}和\end{code}.>,其他任何东西都是评论.>).Bird不跟踪类似于StackOverflow代码块的规则声音吗?
参考文献: 1. 将.ghci手册
2. GHCI haskellwiki
3. 关于尼尔·米切尔的博客:{,并:}在.ghci
我喜欢在文本编辑器中编写SO答案,我喜欢发表一个包含有效代码的帖子,但最后还是>在发布之前我必须编辑的注释块或者s,这不那么有趣.
所以,我自己写了一个预处理器.
*或开头:. …当我在ghci中编译我的代码时,没有问题.它可以正确编译.但是,如果我尝试在拥抱中编译它,我会收到错误"编译代码太复杂".我认为问题是由于许多|条件造成的.
如果我将其更改为使用if/else,则没有问题.我可以添加if/else语句100次,但这将非常烦人和恼人.而不是那样,我试图在20-30 |条件之后放置if/else语句,但是|如果语句如下所示我无法进行工作:
f x y z
| cond1 = e1
| cond2 = e2
...
if (1)
then
| cond30 = e30
| cond31 = e31
...
else
| cond61 = e61
| cond62 = e62
Run Code Online (Sandbox Code Playgroud)
如何以最少的努力修复代码?完整的代码在hpaste上,因为它比StackOverflow的问题大小限制更长.