Skip to content

Instantly share code, notes, and snippets.

@Lazzlo2096
Created August 2, 2018 14:03
Show Gist options
  • Save Lazzlo2096/81f2744cc629d4c396bc79a8dd336618 to your computer and use it in GitHub Desktop.
Save Lazzlo2096/81f2744cc629d4c396bc79a8dd336618 to your computer and use it in GitHub Desktop.
Новые вопросы Hs 2018.08.02
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