从文字‘7.5’中产生的(小数整数)没有实例

我正在编写一些代码来计算一些东西的价格,根据项目的类型和多少人正在购买。下面是我现在所拥有的

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