Я пытаюсь определить функцию, поведение которой я хочу вести немного по-разному, в зависимости от того, какой тип данных передается в качестве аргумента, строк и целых чисел. Как можно это сделать? Или есть какие-то изменения, которые вы могли бы предложить как-то объединить эти два в одну функцию. Я читал, что попытка проверить тип данных не очень похожа на хаскель, поэтому я подумал, что переопределение может быть способом сделать это, но компилятору не нравится дубликат :(
jumpTo :: Int -> [String] -> [String]
jumpTo index t = do
let (x,y) = splitAt index t
init x ++ [last x ++ "QQ"] ++ y
jumpTo :: String -> [String] -> [String]
jumpTo string t = do
pos <- [fromJust (findWord string t)]
let (x,y) = splitAt pos a
init x ++ [last x ++ "QQ"] ++ y
Словом, я хочу функцию jumpTo
, которой можно передать либо String
, либо Int
в качестве первого аргумента; если это строка, я нахожу ее в списке, и для целого числа я делаю операции с индексом сразу. Просто кажется более элегантным иметь ту же функцию, выполняющую это.