следующий код не скомпилирован. Я получаю ошибку типа. Я думал, что это будет более приятная версия, поскольку она четко разделяет два разных случая ... Функция должна помочь решить, принимает ли конечный автомат принимающее слово.Haskell - типы/соответствие шаблону
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 [email protected][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 за помощь
'xs @ (x: xs ')', а не 'xs @ [x: xs']'. – luqui
Ah .. Спасибо ^^ Это решает проблему ... –