У меня есть проблемы в понимании следующей функцииШаг за шагом Замена
lines :: String -> [String]
lines "" = []
lines ('\n':cs) = "": lines cs
lines (c:cs) = case lines cs of
[] -> [[c]]
(l:ls) -> (c:l):ls
Я хочу, чтобы понять, что эта функция делает, когда его называют "f\no"
. Я ищу инструмент, который показывает каждый шаг замещения для лучшего понимания функции. Я попробовал это вручную (и получил решение при написании этого сообщения), но я не уверен, что я прав.
lines ('f':"\no") = case lines "\no" of
[] -> [['f']]
(l:ls) -> ('f':l):ls
->lines "\no"
lines ('\n':"o") = "": lines "o"
->lines "o"
lines ('o':"") = case lines "" of
[] -> [['o']]
(l:ls) -> ('o':l):ls
->lines ""
lines "" = []
-> вернуться []
lines ('o':"") = case [] of
[] -> [['o']]
lines ('o':"") = [['o']]
-> вернуться ["o"]
lines ('\n':cs) = "": ["o"]
-> вернуться "": ["o"]
lines ('f':"\no") = case "":["o"] of
(l:ls) -> ('f':l):ls
lines ('f':"\no") = ('f':""):["o"]
= ["f", "o"]
Является ли это правильно?
выглядит хорошо да - для инструмента: вы можете в основном использовать отладчик в GHCi к шагу через него;) – Carsten
кстати: это такой вопрос, на самом деле весьма прискорбно для SO - как вы можете видеть вы получаете ответы «Да, я так думаю» - вот почему я собираюсь проголосовать за закрытие этого – Carsten
Возможно, https://stevekrouse.github.io/hs.js/ может помочь, но я не знаю точно, сколько Haskell поддерживается этим инструментом. – chi