小编Bao*_*Ngo的帖子

在Haskell中将Int分为Int

我想要一个计算给定标记列表的平均标记的函数.这是我到目前为止所做的:

getAverageRate :: [Int]->Int
getAverageRate marks = (fromIntegral (foldr (+) 0 marks))/(fromIntegral (length marks))
Run Code Online (Sandbox Code Playgroud)

我想要做的是通过使用'foldr'然后除以'length marks'来获得列表中所有标记的总和.尽管我已经使用'fromIntegral'这个错误仍然出现,我找不到问题.

No instance for (Fractional Int) arising from a use of `/'
Possible fix: add an instance declaration for (Fractional Int)
In the expression:
  (fromIntegral (foldr (+) 0 marks)) / (fromIntegral (length marks))
In an equation for `getAverageRate':
    getAverageRate marks
      = (fromIntegral (foldr (+) 0 marks))
        / (fromIntegral (length marks))
Run Code Online (Sandbox Code Playgroud)

int haskell

2
推荐指数
1
解决办法
2805
查看次数

haskell定义新类型

这可能是一个愚蠢的问题,但在我发布之前,我花了四个小时来指出问题所在.

data Film = Film {title :: String
                ,name :: String
                ,year :: Int}
    deriving (Show)
testDatabase :: [Film]
 testDatabase = [ ("Blade Runner", "Ridley Scott",1982)]
 --(i) Add new film to the database
addFilm :: String -> String -> Int -> [Film] -> [Film]
 addFilm title director year film = film + Film title director year 

 --(ii) Give all film in the database
getFilm :: [Film]
getFilm =  testDatabase
Run Code Online (Sandbox Code Playgroud)

我想要做的是定义一个新的类型名称Film,其中包含:电影片名,电影导演和制作年份.
Testdatabase用于存储数据.
addFilm是一个向数据库添加更多电影的功能.
getfilm用于打印出电影列表.

这就是错误的样子.

coursework.hs:21:18: …
Run Code Online (Sandbox Code Playgroud)

haskell

1
推荐指数
1
解决办法
168
查看次数

标签 统计

haskell ×2

int ×1