小编Cri*_*dma的帖子

Haskell:Show的新实例声明

我正在尝试在Haskell中为我创建的新数据类型添加一个实例声明失败.这是我到目前为止所尝试的:

data Prediction = Prediction Int Int Int
showPrediction :: Prediction -> String
showPrediction (Prediction a b c) = show a ++ "-" ++ show b ++ "-" ++ show c
instance Show (Prediction p) => showPrediction p
Run Code Online (Sandbox Code Playgroud)

似乎最后一行是错误的,但我不确定如何实现我想要的.基本上是能够从解释器调用一个Prediction变量并使其可视化而无需调用showPrediction.现在这个工作:

showPrediction (Prediction 1 2 3)
Run Code Online (Sandbox Code Playgroud)

并显示:

"1-2-3"
Run Code Online (Sandbox Code Playgroud)

正如所料,但我希望这可以工作(来自翻译):

Prediction 1 2 3
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

haskell

30
推荐指数
3
解决办法
5万
查看次数

将方法的proc作为块提供

假设我有以下数组:

arr = [[5, 1], [2, 7]]
Run Code Online (Sandbox Code Playgroud)

我想找到最小元素,比较元素的第二个元素.最小元素将是[5, 1]因为1小于7.我可以使用以下代码:

arr.min {|a,b| a[1] <=> b[1]}
Run Code Online (Sandbox Code Playgroud)

为了计算最大值,我也可以这样做:

arr.max {|a,b| a[1] <=> b[1]}
Run Code Online (Sandbox Code Playgroud)

这给了[2, 7].

我一直使用相同的块.我想在某处拥有该块并将其提供给min/max函数.我希望这样的事情:

blo = lambda {|a,b| a[1] <=> b[1]}
arr.min blo
Run Code Online (Sandbox Code Playgroud)

会工作,但它没有.有关如何做到这一点的任何想法?

ruby codeblocks proc

11
推荐指数
2
解决办法
4793
查看次数

标签 统计

codeblocks ×1

haskell ×1

proc ×1

ruby ×1