任務:使用 map 轉換一個數字串列,使每個偶數除以 2,每個奇數乘以 2
prel2 :: (Fractional b) => [Int] -> [b]
prel2 x = map prel x
where prel y
|even y = y/2
|otherwise = y*2
我知道這是一些基本的東西,但我不知道為什么會出現錯誤
uj5u.com熱心網友回復:
您的型別簽名承諾您可以提供具有Fractional實體的任何型別的值串列。但是,sincey總是一個(since ),then總是一個,并且根本不會進行型別檢查。Intx :: [Int]y*2Inty/2
您可能想要的是使用div而不是用約束/替換約束,然后將您的型別概括為.FractionalIntegralIntegral b => [b] -> [b]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/530201.html
標籤:哈斯克尔
