-
-
Save Lazzlo2096/81f2744cc629d4c396bc79a8dd336618 to your computer and use it in GitHub Desktop.
Новые вопросы Hs 2018.08.02
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
f :: p -> p | |
f z = z | |
data MyT = O Int | T Char deriving(Show) | |
data MyT2 = O2 Int | T2 Char deriving(Show) | |
g :: MyT -> MyT | |
g z = z | |
-- f O 3 | |
-- g O 3 | |
-- что за нафиг? | |
h :: b -> (b -> a) -> a | |
h b a = a b | |
-- Хочу сделать такую ф-цию j чтоб | |
-- j :: b -> MyT -- где b это Int или Char, если что угодно то ошибка | |
-- j 3 = O 3 | |
-- j '4' = T '4' | |
-- по сути я хочу включить приведение типов. | |
-- это не имеет смысла, т.к. может быть что data MyT = O Int | T Int | |
-- и тогда не ясно что выбирать | |
-- j 3 = O 3 или | |
-- j 3 = T 3 -- возникает двойственность | |
-- но ведь в data MyT = O Int | T Char её не возникает, и в этом слечае допустимо позволять так делать???? - это уже этический вопрос, может в таких случаях просто ошибка компилятора? | |
-- j :: (Eq a, Num a) => a -> MyT | |
-- j 3 = O 3 | |
-- j :: Char -> MyT | |
-- j '4' = T '4' | |
-- j :: a -> MyT -- поч тут тож ошибка??(( | |
-- j '4' = T '4' | |
--- чем это мне не <$ ? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment