Я определил тип данных для двоичных чисел следующегореверса двоичных чисел в Haskell
data Bin = Nil | O Bin | I Bin
deriving (Show, Eq)
я хочу, чтобы определить функцию reverse :: Bin -> Bin
так, что, когда я внести свой вклад как
reverse (I (O (I (I Nil))))
я должен получить outut I (I (O (I Nil)))
, что означает обратный как вход, любое тело, пожалуйста, дайте мне подсказку, как я могу это сделать?
Просто для внутренней информации, даже если это чужое определение, они комбинируя идеи списка и двоичное число, когда он гораздо проще удержать их отдельно, а затем объединить их вместе. Это, по сути, точка haskell: состав частей. Просто поймите, если вам нужно было ввести определение, которое лучше (решение Айдана Калли). – codebliss
Я, вероятно, вообще не создавал бы никаких новых типов: 'Bool' уже является подходящим типом бит, а' [] 'уже является подходящим типом списка. Возможно, создание псевдонима типа Bin = [Bool]. – ephemient