您需要申請一部分
isGroupInscr :: GroupeCours -> Inscription -> Bool
獲得已鍵入
Inscription -> Bool
功能
能夠與filter :: (a -> Bool) -> [a] -> [a]
從類型的函數猜測使用,我想你想要的是
isGroupInscr :: GroupeCours -> Inscription -> Bool
isGroupInscr sigleGroup sigleInscr = getSigle sigleGroup /= getSigle2 sigleInscr
filtreGroupInscr :: [GroupeCours] -> [Inscription] -> [GroupeCours]
filtreGroupInscr (g:gs) (l:ls) = if isGroupInscr g l
then g : filtreGroupInscr gs ls
else []
filtreGroupInscr _ _ = []
其他可能的猜測
filtreGroupInscr listGroupe listInscr
= [g | g <- listGroupe , l <- listInscr, isGroupInscr g l]
而且,注意到你不必使用()
來調用函數,除非它確實需要。 Haskell將空間用作函數應用程序。
側面說明:哈斯克爾undefined
魔術,我能夠加載不完整的代碼GHCI做類型檢查。
代碼test3.hs
data GroupeCours = GroupeCours
data Inscription = Inscription
data Single = Single deriving Eq
getSigle :: GroupeCours -> Single
getSigle = undefined
getSigle2 :: Inscription -> Single
getSigle2 = undefined
isGroupInscr :: GroupeCours -> Inscription -> Bool
isGroupInscr sigleGroup sigleInscr = getSigle sigleGroup /= getSigle2 sigleInscr
filtreGroupInscr :: [GroupeCours] -> [Inscription] -> [GroupeCours]
filtreGroupInscr (g:gs) (l:ls) = if isGroupInscr g l
then g : filtreGroupInscr gs ls
else []
filtreGroupInscr _ _ = []
filtreGroupInscr' :: [GroupeCours] -> [Inscription] -> [GroupeCours]
filtreGroupInscr' listGroupe listInscr
= [g | g <- listGroupe , l <- listInscr, isGroupInscr g l]
GHCI行動
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /data/works/dotfiles/ghci
Prelude> :l test3.hs
[1 of 1] Compiling Main (test3.hs, interpreted)
Ok, modules loaded: Main.
*Main> :t isGroupInscr
isGroupInscr :: GroupeCours -> Inscription -> Bool
*Main> :t filtreGroupInscr
filtreGroupInscr :: [GroupeCours] -> [Inscription] -> [GroupeCours]
*Main> :t filtreGroupInscr'
filtreGroupInscr'
:: [GroupeCours] -> [Inscription] -> [GroupeCours]
你不需要在這裏lambda表達式:簡單'isGroupInscr'足以在'filter'第一個參數。 –
你可以編輯你的問題,包括整個程序? (或者在[一些pastebin](https://hastebin.com)中提供一個到源代碼的鏈接?) –
沒有類型定義和規範就無法回答這個問題 - 你想做什麼?你根本沒有使用'listInscr'參數,所以這看起來相當不對。可能你需要對這兩個列表進行壓縮,然後進行過濾,或者使用「任意」或自定義遞歸來搜索課程中是否出現錯誤。 – chi