小编Let*_*thi的帖子

Haskell - foldl和foldr?

循环的方向foldlfoldr方向之间的区别是什么?我认为他们所做的不同,而不只是方向?

haskell fold

50
推荐指数
1
解决办法
2万
查看次数

如何查看"和"的实现代码?

我找到了和在互联网上的定义,但我找不到和的实际实现.我确实在我的计算机上搜索了某种前奏的haskell文件,但它没有返回任何可以在文本编辑器中打开的内容.

haskell

7
推荐指数
1
解决办法
298
查看次数

在Haskell中使用数据类型

我已经开始这是一个新问题,因为它成为我上一个问题的后续问题.

如果我有两个由类似构造函数组成的数据类型:

data A = X | Y | Z
data B = X | Y
Run Code Online (Sandbox Code Playgroud)

有没有办法我可以用这种方式表示:

data A = C | Z
data B = C

data C = X | Y
Run Code Online (Sandbox Code Playgroud)

如果你能看到我在做什么 - 我正在尝试将X |分组 Y为一种数据类型,然后可由多种其他数据类型使用.我似乎无法让编译器允许这个,或者如果它,我不能模式匹配X或Y,只有C ??

我收到多次声明C的错误消息.

我以为我可以使用类型,但它们不允许多种类型.

编辑

即使我声明了很长的路(如下所示),它仍然无法编译,并且说X和Y有多个声明:

data A = X | Y | Z
data B = X | Y
Run Code Online (Sandbox Code Playgroud)

haskell typing subtyping

6
推荐指数
1
解决办法
246
查看次数

与两个进程共享ETS表?

我在一个进程中创建ETS表,我想在另一个进程中使用它.我如何在第二个过程中"打开"ETS表?无法在手册页中找到好的功能.

erlang ets

4
推荐指数
1
解决办法
2711
查看次数

Erlang负载均衡器

负载均衡器必须知道所有节点.客户端将与负载均衡器连接,然后负载均衡器将每个任务分配给节点.

如果客户端总是访问相同(单个)负载均衡器,怎么会没有单点故障?您不能拥有两个负载均衡器,否则客户端将如何知道要连接哪个负载均衡器?

是否接受了对于某些设计部分,您无法避免单点故障?

erlang distributed

3
推荐指数
1
解决办法
2280
查看次数

监督与监督?

监督员和监察员一样吗?使用显示器是好还是使用主管会更好?

我不确定何时使用显示器而不是主管.

erlang

2
推荐指数
1
解决办法
1088
查看次数

pid_to_list()改变pid的值?

我的代码如下:

PID = spawn_link(DistrNode, ......

io:format("~p debug1 ~n",[PID]),
io:format("~p debug2 ~n",[pid_to_list(PID)]),
Run Code Online (Sandbox Code Playgroud)

我觉得:

<10062.97.0> debug1

"<9453.97.0>"debug2

我想把PID作为字符串抓取但不像上面那样改变值 - 这里发生了什么?我看起来将pid转换为原子,但没有功能.

我想得到"<10062.97.0>"

编辑它spawn_link()不是spawn()这有什么不同?

erlang

2
推荐指数
1
解决办法
1480
查看次数

抽象数据类型的平等性

如果我有:

data Container a = Node a | End a | Container a
Run Code Online (Sandbox Code Playgroud)

如果我想编写一个可以查看Container的元素列表并执行列表差异的函数,我该怎么做才能明确告诉编译器这个抽象数据类型允许相等?

我以为会是:

compare::Eq (Container a) => Container a -> Container a -> Bool
compare a b
           | a == b = True
           | a /= b = False
Run Code Online (Sandbox Code Playgroud)

但它抱怨Eq声明不正确,因为它无法推断(Eq(容器a))因使用'=='而产生

编辑似乎在我的抽象数据类型中导出(Eq)是允许这种情况的唯一方法.有人可以确认一下吗?

包含导出(Eq)后的EDIT2:

test:: [Container a] -> Container a -> Bool
test list element = elem element list
Run Code Online (Sandbox Code Playgroud)

"没有(Eq a)的实例"

haskell

1
推荐指数
1
解决办法
1085
查看次数

包含不同类型的列表

我目前正在编写自己的结构,可以同时处理整数和字符串:

就像是

data Collection = One Int | Two String | Three(Collection)(Collection)
Run Code Online (Sandbox Code Playgroud)

但是,我试图编写一个可以将我的结构转换为列表的函数.

我认为这是不可能的,因为默认情况下这样做:

并[1,2, "测试"]

在控制台中不起作用,因此我的功能必然总是失败?

haskell

1
推荐指数
1
解决办法
451
查看次数

类型定义中的参数类型

我有这样的数据类型:

data MyType a b = Something a b | ..... 
Run Code Online (Sandbox Code Playgroud)

然后我有一个类型:

type SomethingElse = MyType a b -> AnotherThing
Run Code Online (Sandbox Code Playgroud)

但是,如果我为它所抱怨的类型定义包含a和b参数,但如果我将它们遗漏,它也会抱怨.

错误消息(在类型定义中)是变量a和b不在范围内.

haskell

1
推荐指数
1
解决办法
81
查看次数

Haskell在函数定义中使用Eq =>

我有一个包含抽象数据类型作为参数的函数.为了让我能够将我使用的这种抽象数据类型等同起来:

myfunction:: Eq x=> [x]->[x]->[x]
Run Code Online (Sandbox Code Playgroud)

所以它需要两个x列表,并输出一个[x]列表

但是,当我从另一个函数调用它时:

anotherfunction::[x] -> [x] -> [x]
anotherfunction a b = myfunction a b
Run Code Online (Sandbox Code Playgroud)

它说

在myfunction ab表达式中,没有因使用myfunction而产生的(Eq x)实例

但是,如果我从控制台调用myfunction,使用两个参数就可以了.

我该如何解决这个问题?

haskell

0
推荐指数
1
解决办法
953
查看次数

标签 统计

haskell ×7

erlang ×4

distributed ×1

ets ×1

fold ×1

subtyping ×1

typing ×1