Действительно ли возможно использовать унарную функцию вместо двоичного файла в 'зеркальном отражении'?

Я использовал намного менее сложная версия недавно с jQuery:



Это работало отлично в каждом браузере, в котором я протестировал его: IE6/7, Firefox, Safari, Opera.

Обновление: версия jQuery меньше:


10
задан Chris Conway 11 November 2009 в 19:26
поделиться

2 ответа

Haskell заставляет id соответствовать типу первого аргумента для переворота , устанавливая a = b -> c . Итак:

flip :: ( a       -> b -> c) -> b ->  a       -> c
flip :: ((b -> c) -> b -> c) -> b -> (b -> c) -> c
flip id ::                      b -> (b -> c) -> c

где id рассматривается как имеющий тип

id :: (b -> c) ->  b -> c

, который эквивалентен

id :: (b -> c) -> (b -> c)

, то есть специализация id , которая применяется только к унарным функциям.

Изменить: я думаю, что могу перефразировать свою первую строку как:
Haskell выводит , что id соответствует типу первого аргумента для flip if a = b -> c .
На всякий случай яснее.

15
ответ дан 3 December 2019 в 20:05
поделиться

Нефрубир очень хорошо это объясняет.
Другой способ (надеюсь) сделать это немного более интуитивно понятным - это подумать об операторе приложения функции ($) .

($) - это специализированная форма id ]:

($) :: (a -> b) -> (a -> b)
($) = id

Я видел определение (#) = flip ($) , так что вы можете записать аргумент перед функцией, к которой он будет применен: obj # show .

Очевидно, поскольку ($) - это просто специализированная форма id , вы также можете написать: (#) = flip id

4
ответ дан 3 December 2019 в 20:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: