我正在尝试在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)
有任何想法吗?
假设我有以下数组:
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)
会工作,但它没有.有关如何做到这一点的任何想法?