私は、テストの準備のためにHaskellで課題を作業中です。現在のタスクでは、次の式の後に文字列をトークン化するかどうかを問い合わせます。 "tokenize str separate remove"を実行すると、文字列のリストを出力する必要があります。文字列 "separate"に現れる "str"のすべての文字は、1文字の文字列でなければなりません。文字列 "remove"に現れる "str"のすべての文字は削除する必要があります。別のものと取り除かれていないものは一緒にまとめてください。ハスケルの再帰的トークナイザ
例は、それが問題を例にその事業者ということで、ある程度まで働く出力
["a", "+", "b", "*", "12", "-", "def"]
tokenize :: String -> String -> String -> [String]
tokenize [] _ _ = []
tokenize [x] _ _ = [[x]]
tokenize (x:xs) a b | x `elem` a = [x] : tokenize xs a b
| x `elem` b = tokenize xs a b
| otherwise = (x:head rest) : tail rest
where
rest = tokenize xs a b
以下の私の現在のコード
tokenize "a + b* 12-def" "+-*" " "
がすべきことを示していそれに先行する文字と一緒に束ねられています。別の文字列にある事業者にもかかわらず、この
["a+","b*","12-","def"]
よう
。
問題は行 '|そうでなければ=(x:head rest): 'head rest'とは無関係に' 'head rest'の' 'x''を頭に置いてください。 – sjakobi