Эквивалентность типов функций с переменными типа - PullRequest
3 голосов
/ 16 мая 2011

Мне нужна функция со следующими атрибутами.

(C-> D) -> (а-> b-> с) -> а-> b-> d

моя функция:

функцияD = (.). (.)

но: t funktionD

функцияD :: (a -> b) -> (c -> d -> a) -> c -> d -> b

это равно?

Ответы [ 2 ]

4 голосов
/ 16 мая 2011

Это так. Переменные типа - написанные в нижнем регистре - это просто переменные. Вы можете переименовывать их по своему вкусу до тех пор, пока шаблон одной и той же переменной останется прежним.

Кроме того, по сути по той же причине, для указанной вами сигнатуры типа есть только одна возможная функция этого типа (исключая функции, которые аварийно завершают работу или переходят в бесконечные циклы). О чем подумать!

2 голосов
/ 16 мая 2011

Я думаю, что это так.Замените a на c (и наоборот), затем замените b на d (и наоборот), и они будут одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...