flattern :: [(Char, Int)] -> String
flattern [] = ""
flattern ((w,l):xs) = show l ++ w : flattern xs
이 반대 기능은 무엇입니까? 이것을 해결할 수있는 방법이 있습니까?이 함수의 역함은 무엇입니까?
flattern :: [(Char, Int)] -> String
flattern [] = ""
flattern ((w,l):xs) = show l ++ w : flattern xs
이 반대 기능은 무엇입니까? 이것을 해결할 수있는 방법이 있습니까?이 함수의 역함은 무엇입니까?
그것은 반전이 아니다 :
은 (임의의 문자열이 숫자로 시작되지 않음)이 기능을 재현 할 수없는 문자열이 있습니다.
부분적으로 반전되지 않습니다. 여러 개의 입력에 해당하는 문자열도 있습니다. 또는 [('1',111)]
으로 "1111"
을 생성 할 수 있습니다.
이 기능을 반전하는 기능으로 사용 하시겠습니까? flattern ((w,l):xs) = replicate l w ++ flattern xs
과 같은 것이 아닌가요?
실제로 원한다면 함수의 출력을 구문 분석하여 인수가 무엇이어야했는지 재구성 할 수 있습니다.
import Text.ParserCombinators.Parsec
unflat1 :: Parser (Char, Int)
unflat1 = do
c <- anyChar
n <- many1 digit
return (c, read n)
readExpr :: String -> Either String [(Char, Int)]
readExpr input = case parse (many unflat1) "unflat" input of
Left err -> Left ("No match: " ++ show err)
Right val -> Right val
이 예제는 flattern이 첫 번째 입력으로 숫자가없는 한 작동합니다. flattern [('a',1), ('2',3)]
과 같은 내용은 [(a, 123)]
으로 구문 분석됩니다.
하스켈을 알지 못한다면, 역함수에 대한 역함수가 있다고 생각하지 않습니다. –
왜이 태그에는 "work"가 붙어 있습니까? 이 어설프고 끔찍한 제목의 질문에 어떤 업무용 응용 프로그램이있을 수 있습니까? –