gpt4 book ai didi

haskell - 无法将预期类型 (Int -> Int -> Int) 与实际类型 `(t0, t1, t2)' 匹配

转载 作者:行者123 更新时间:2023-12-04 04:07:37 26 4
gpt4 key购买 nike

我是一个初学者,在进入大学学习计算机科学之前,我正在尝试做一些关于 Haskell 的教程。

我被困在这个程序中。它需要三个数字并将它们按升序排列。谁能帮助我并告诉我出了什么问题,因为这让我发疯了?谢谢你的时间。

import Prelude hiding (min,max)
orderTriple :: (Int -> Int -> Int) -> (Int -> Int -> Int)
max :: Int -> Int -> Int -> Int
min :: Int -> Int -> Int -> Int
middle :: Int -> Int -> Int -> Int


max x y z
|(x>=y) && (x>=z) = x
|(y>=x) && (y>=z) = y
|otherwise = z

min d e f
|(d<=e) && (d<=f) = d
|(e<=d) && (e<=f) = e
|otherwise = f

middle g h i
| (g <= (max g h i)) && (g >= (min g h i)) = g
| (h <= (max g h i)) && (h >= (min g h i)) = h
| otherwise = i

orderTriple (a,b,c) = ((min a b c),(middle a b c),(max a b c))

错误是:
orderList.hs:23:13:
Couldn't match expected type `[Int -> Int -> Int]'
with actual type `(t0, t1, t2)'
In the pattern: (a, b, c)
In an equation for `orderTriple':
orderTriple (a, b, c) = [(min a b c), (middle a b c), (max a b c)]

最佳答案

你给编译器错误的类型信息:

orderTriple :: (Int -> Int -> Int) -> (Int -> Int -> Int)

应该
orderTriple :: (Int, Int, Int) -> (Int, Int, Int)

第一次打字声称 orderTriple将一个函数(从两个 Int 转换为一个)转换为另一个这样的函数,这根本不是您的代码所做的。

(另外:+1 用于学习 FP 以准备 CS 类(class))。

关于haskell - 无法将预期类型 (Int -> Int -> Int) 与实际类型 `(t0, t1, t2)' 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7232375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com