Заставить оболочку Erlang забыть BIF

Есть ли способ заставить Erlang забыть встроенную функцию, чтобы я мог использовать это имя?

например. забыть восстановить


person Busy August    schedule 08.08.2015    source источник


Ответы (1)


Здесь есть небольшая путаница.

  1. retrieve не является встроенной функцией, вы можете иметь в виду receive
  2. receive — это не встроенная функция, а специальный токен в языке, очень похожий на if, case, end и так далее. Их нельзя изменить.
  3. BIF в основном реализованы в модуле erlang, и вы не можете переопределить этот модуль.
  4. Многие из BIF в erlang автоматически импортируются в модули и тому подобное. Любое локальное определение модуля примет их на себя, в противном случае они являются синтаксическими сокращениями для erlang:MyBif(...).
  5. Оболочка повторяет этот автоматический импорт, но также предоставляет дополнительные функции. Технически они не являются BIF. См. раздел Команды оболочки.
  6. Вы можете переопределить автоматический импорт для оболочки, настроив свой собственный модуль user_default. Они будут работать только в оболочке.
  7. Чтобы избежать автоимпорта в модулях, используйте атрибут модуля -compile({no_auto_import,[Name/N]})., чтобы Name(...) всегда использовал локальную функцию.
person I GIVE TERRIBLE ADVICE    schedule 08.08.2015