Я использовал намного менее сложная версия недавно с jQuery:
Это работало отлично в каждом браузере, в котором я протестировал его: IE6/7, Firefox, Safari, Opera.
Обновление: версия jQuery меньше:
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
.
На всякий случай яснее.
Нефрубир очень хорошо это объясняет.
Другой способ (надеюсь) сделать это немного более интуитивно понятным - это подумать об операторе приложения функции ($)
.
($)
- это специализированная форма id
]:
($) :: (a -> b) -> (a -> b)
($) = id
Я видел определение (#) = flip ($)
, так что вы можете записать аргумент перед функцией, к которой он будет применен: obj # show
.
Очевидно, поскольку ($)
- это просто специализированная форма id
, вы также можете написать: (#) = flip id