首先,我对 Haskell 还很陌生,目前我只是在准备考试。我有这样的表达:
reverse . take 3 [1 .. 10]我得到的是一个错误。这是因为空格运算符(10)比.运算符(9)具有更大的优先级,并且上面的表达式相当于reverse . (take 3 [1..10])which is reverse . ([1, 2, 3])which是reverse和list之间的组合,这没有任何意义,对吧?我试图确保我做对了,我在互联网上没有找到类似的东西。
我对 UNIX 编程很陌生,遇到了一些我不明白的事情。这是以下代码片段:
#include <stdio.h>
#include <sys/types.h>
int main()
{
printf("%d ", fork());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:9298 0。为什么子进程这么称呼printf?在我的课程中,我被告知它会在fork()调用后执行所有操作。我做错了什么?
所以我有这样的课程:
class Collection c where
empty :: c key value
singleton :: key -> value -> c key value
insert :: Ord key => key -> value -> c key value -> c key value
looKup :: Ord key => key -> c key value -> Maybe value
delete :: Ord key => key -> c key value -> c key value
keys :: c key value -> [key]
keys x = map fst $ toList x
values :: c …Run Code Online (Sandbox Code Playgroud)