gpt4 book ai didi

haskell - lambda 中的非详尽模式

转载 作者:行者123 更新时间:2023-12-02 20:58:14 27 4
gpt4 key购买 nike

我得到了 lambda 中的非详尽模式。我还不确定原因。请任何人如何解决它。代码如下:

import Control.Monad
import Data.List
time_spent h1 h2 = max (abs (fst h1 - fst h2)) (abs (snd h1 - snd h2))
meeting_point xs = foldl' (find_min_time) maxBound xs
where
time_to_point p = foldl' (\tacc p' -> tacc + (time_spent p p')) 0 xs
find_min_time min_time p = let x = time_to_point p in if x < min_time then x else min_time

main = do
n <- readLn :: IO Int
points <- fmap (map (\[x,y] -> (x,y)) . map (map (read :: String->Int)) . map words . lines) getContents
putStrLn $ show $ meeting_point points

最佳答案

这是具有非详尽模式的 lambda:\[x,y] -> (x,y)

非穷尽模式是因为您指定的参数 [x,y] 不匹配任何可能的列表 - 它只匹配具有恰好两个元素的列表。

我建议将其替换为带有错误情况的单独函数,以打印错误消息中的意外数据,以便您可以进一步调试,例如:

f [x,y] = (x, y)
f l = error $ "Unexpected list: " ++ show l

...
points <- fmap (map f . map ...)

关于haskell - lambda 中的非详尽模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20829261/

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