Что такое функция идентификации? Он просто возвращает одно и то же значение. Следовательно, вместо того, чтобы поставить (identity x)
, почему бы просто не поставить x
? Может ли кто-нибудь привести примеры использования функции идентификации в Racket/Scheme? Там нет примеров на этой странице документации: https://docs.racket-lang.org/htdp-langs/beginner.html#%28def.htdp-beginner.%28%28lib._lang%2Fhtdp-beginner..rkt%29.identity%29%29 и https://docs.racket-lang.org/reference/procedures.html?q=identity#%28def.%28%28lib._racket%2Ffunction..rkt%29._identity%29%29Какое использование функции идентификации в Racket?
ответ
identity
функция наиболее полезна в качестве аргумента некоторых функций высшего порядка (функции, которые принимают функции в качестве аргументов), когда функция выполняет определенный вид отображения настроенного его аргумент, и вы хотите передать значение без изменений. †
Один чрезвычайно общей идиомы на схеме/Ракетка использует (filter identity ...)
, чтобы удалить все #f
значения из списка:
> (filter identity '(1 2 #f 4))
'(1 2 4)
Это работает, потому что filter
применяет предоставленную функцию к каждому из элементов списка , затем отбрасывает значения, которые приводят к #f
. Используя identity
, сами значения проверены. В этом смысле identity
является функциональным «no-op».
Вы можете иногда увидеть это идиома пишется (filter values ...)
вместо (filter identity ...)
потому что values
случается тождественную функцию при условии, с одним аргументом, и это происходит из racket/base
вместо racket/function
. Я предпочитаю версию, которая использует identity
явно, хотя, потому что я думаю, что немного более понятно, что происходит.
† Это описание функции идентичности происходит от this nice answer на эквивалентный вопрос Haskell.
в любом случае передать #f вместо функции idenity? – X10D
@ X10D Нет, нет. Почему вы хотите это сделать? –
- 1. Использование структуры в Racket
- 2. Использование идентификации и прикрепить в функции
- 3. Какое правильное использование функции WaitOne()
- 4. Какое поле модуля используется в инспекторе идентификации?
- 5. Какое использование анонимной функции в findAll?
- 6. Racket, поля структуры доступа в функции
- 7. Проверка скобок функции racket
- 8. Racket Capturing Результат функции
- 9. Возьмите инверсию функции в Racket
- 10. Функции рисования в Typed Racket
- 11. Использование принтера из Racket
- 12. Использование библиотек Python в Racket
- 13. Использование линий сюжета Racket
- 14. Какое правильное использование функции CSS attr?
- 15. Назначение функции идентификации?
- 16. Какое использование .bind()
- 17. Возврат преждевременно от функции в Racket
- 18. функции и списки в схеме/racket
- 19. Примитивы и встроенные функции в Racket
- 20. Почему функции последовательности для всех в Racket
- 21. Каков тип вариационной функции в Typed Racket?
- 22. Основные функции редактора кода в Racket
- 23. Что эквивалентно функции повторения Clojure в Racket
- 24. Использование модульного тестирования для процедуры в Racket
- 25. Использование «define-type» в Racket дает ошибку
- 26. Использование поддомена для идентификации клиентов
- 27. Использование python для идентификации голоса
- 28. Использование GAP для идентификации группы
- 29. Какое правильное использование has_func, когда функции тестирования нуждаются в аргументах?
- 30. В Racket можно ли экспортировать функции после вызова другой функции?
Есть несколько связанных вопросов об использовании функции идентификации на других языках, идея, вероятно, такая же, см., Например, http://stackoverflow.com/questions/3136338/uses-for-haskell-id-function или http://stackoverflow.com/questions/15421502/is-there-any-good-example-of-use-cases-for-angular-identity?noredirect11&lq=1 – Thilo
То же самое можно задать о постоянных функциях;). – Alexey