次のコードはコンパイルされません。タイプエラーが発生します。これは、2つの異なるケースを明確に分離しているため、より良いバージョンになると思いました...この関数は、有限状態マシンが入力ワードを受け入れるかどうかを判断するのに役立つはずです。
import Text.Show.Functions
import qualified Data.Set as Set
import qualified Data.List as List
setTransition :: (Int -> Char -> [Int]) -> [Int] -> Char -> [Int]
setTransition delta [] sigma = []
setTransition delta xs@[x:xs'] sigma = foldl f [] xs
where f ys q = (delta q sigma) `List.union` ys
ただし、これ(パターンマッチングを削除)はコンパイルされます。誰かが理由を教えてもらえますか?
import Text.Show.Functions
import qualified Data.Set as Set
import qualified Data.List as List
setTransition :: (Int -> Char -> [Int]) -> [Int] -> Char -> [Int]
setTransition delta [] sigma = []
setTransition delta xs sigma = foldl f [] xs
where f ys q = (delta q sigma) `List.union` ys
助けてくれたThx