我正在编写一些代码来计算一些东西的价格,根据项目的类型和多少人正在购买。下面是我现在所拥有的
calcPrice :: String -> Integer -> Integer
calcPrice tickType num
| tickType=="Child" = (7.5 * num)
| tickType=="Adult" = (12.5 * num)
| tickType=="Senior" = (8 * num)
| otherwise = 0
main = do
putStrLn "Please enter the type of ticket and amoount needed"
ticketType <- getLine
ticketNum <- getLine
let x = read ticketNum :: Integer
print(calcPrice ticketType x)
当我运行这个程序并输入“Adult5”时,它应该打印"62.5“。当我运行这个程序时,我得到一个错误提示"main.hs:4:25: error:* No instance for ( program )来源于文字` 7.5‘“如果我把7.5改成只有7,它就会移到12.5的下一行。不过,这个数字必须是它们的原样。
我一定漏掉了一些愚蠢的东西,因为我真的不确定如何指定票数将被乘以的数字。我在Num7.5和num上都尝试过fromIntegral()和fromInteger(),但显然它不应该这样使用。我应该如何格式化这些数字,以便程序可以正常地将它们相乘?
转载请注明出处:http://www.xingnongyuan.com/article/20230512/2536298.html