Сравнение функциональных языков программирования

Из Википедии, бесплатной энциклопедии

В таблице показано сравнение языков функционального программирования , в котором сравниваются различные функции и конструкции разных языков функционального программирования .

Имя Чистый Ленивая оценка Ввод текста Абстрактные типы данных Алгебраические типы данных Данные неизменяемы Типовые классы Вывоз мусора Впервые появился
Общий Лисп Нет [1] Частично, смоделировано с помощью thunks [2] Динамический [3] Да [4] Частичный, с продлением [5] Нет [6] Непригодный Да 1984
Схема Нет [7] Да [8] Динамический [7] Да [9] Частично, смоделировано с помощью thunks [10] Нет [11] Непригодный Да 1975
Ракетка Нет Да, по умолчанию в Lazy Racket [12] Динамический по умолчанию, постепенный с помощью Typed Racket [13] Да [14] Да, с алгебраической ракеткой [15] Частичный [16] Нет Да 1995
Кложур Нет [17] Да [18] Динамический [19] Да [20] Да [21] Да [22] Непригодный Да 2007
Стандартный ML Нет [23] Нет [24] [25] Статический [26] Да Да Да [27] Нет Да 1983
OCaml Нет [28] Да [28] Статический [29] Да [30] Да [31] Да [32] Частично, моделируется с помощью параметрических модулей [33] Да 1996
Ф# Нет [34] Да [35] Статический [36] Да [37] Да [38] Да [39] Нет Да 2005
Хаскелл Да [40] По умолчанию [41] Статический [42] Да [40] Да [43] Да [44] Да [45] Да 1990
Скала Нет [46] Да [47] Статический [46] Да [48] Да [48] Да [49] Да [50] Да 2004
JavaScript Нет [51] [ ненадежный источник? ] Частичный, с продлением [52] Динамический [53] Частичный, с продлением [54] Частичный, с продлением [55] Частичный [56] [57] Непригодный Да 1995
Чистый Да [58] Да, с дополнительными аннотациями строгости [59] Статический с уникальностью /опционально динамический [60] Да [59] Да [59] Да, за исключением уникальных типов [59] Да [59] Да 1987
Миранда Да [61] По умолчанию [62] Статический [61] Да [63] Да [61] Да Нет Да 1986
SASL Да [64] Да Динамический [65] Да Да Да Нет Да 1972
Эликсир Нет Частичный, с модулем Stream [66] Динамический Да Нет Да Непригодный Да 2012
Эрланг Нет Нет [67] Динамический Да [68] Нет Да [69] Непригодный Да 1986
Вяз Да Нет Статический [70] ? Да [71] Да [70] Нет Да 2012
Футарк Да Нет Статический [72] Да Да Да [70] Нет Да 2014
Питон Нет [73] Частичное, моделируется с помощью генераторов Динамический [74] Да [75] Нет Частичный [76] Непригодный Да 1991
Идрис Да [77] Да [77] Статический [77] Да [77] Да [77] Да [77] Да [77] Да 2007
Никс Да Нет Статический Нет Да Да Нет Да 2003
Вольфрам Язык Нет Нет Статический Да Да Да Нет Да 1988
Котлин Нет Частичное, ленивое делегирование [78] и последовательность [79] Статический Да Нет Да Нет Да 2011
Быстрый Нет Нет Статический Да Да Да Нет Swift использует автоматический подсчет ссылок , который отличается от отслеживания сборки мусора , но предназначен для предоставления аналогичных преимуществ с большей производительностью. 2014
Юлия Нет Нет [80] Динамический [81] Да [81] Нет Частичный [81] Непригодный Да 2012
Чистый скрипт Да Нет Статический Да Да Да Да Да 2013
Ржавчина Нет Частично, итераторы ленивы, [82] существуют внешние библиотеки [83] Статический [84] Да [85] Да [86] Да [87] Да, через черты характера [85] Нет 2010
Лес Нет Нет Статический Да Да Да Un­known Да 2019
Д Да, несколько уровней подписки [88] [89] Да, но не по умолчанию [90] Статический [91] ? Да Да [92] Нет Да [93] 2001

Ссылки [ править ]

  1. ^ «Введение в ЛИСП» . Проверено 26 ноября 2013 г.
  2. ^ Антониотти, Марко. «CLAZY: ленивый вызов в Common Lisp» . Проверено 26 ноября 2013 г.
  3. ^ Тратт, Лоуренс (июль 2009 г.). «Динамически типизированные языки» . Достижения в области компьютеров . 77 : 149–184. дои : 10.1016/s0065-2458(09)01205-4 . Проверено 26 ноября 2013 г.
  4. ^ «Учебная лекция 3: Абстракция данных» .
  5. ^ «Алгебраические типы данных в Common Lisp» . Гитхаб . Проверено 11 мая 2020 г.
  6. ^ «Изменяемые структуры данных» (PDF) . Проверено 28 ноября 2013 г.
  7. ^ Перейти обратно: а б «Сходные функциональные языки» . Проверено 26 ноября 2013 г.
  8. ^ «(Схема) 17. Ленивая оценка» . Проверено 30 апреля 2020 г.
  9. ^ «Записи – исправленные 6 Отчет об алгоритмической языковой схеме» . Проверено 11 мая 2020 г.
  10. ^ «Алгебраические типы данных в схеме» . Проверено 11 мая 2020 г.
  11. ^ «Программы с государством» . Проверено 29 ноября 2013 г.
  12. ^ Барзилай, Эли. «Ленивая ракетка» . Проверено 8 февраля 2020 г.
  13. ^ Тобин-Хохштадт, Сэм; Сент-Амур, Винсент; Добсон, Эрик; Такикава, Асуму. «Напечатанная ракетка» . Проверено 8 февраля 2020 г.
  14. ^ «Руководство по рэкету: типы данных, определяемые программистом» . Проверено 8 февраля 2020 г.
  15. ^ Гриффис, Эрик. «Алгебраическая ракетка» . Проверено 8 февраля 2020 г.
  16. ^ Баттрик, Мэтью. «Красивая ракетка: Структуры данных» . Проверено 8 февраля 2020 г.
  17. ^ «Функциональное программирование на Clojure» .
  18. ^ «Кложур — ленивый» . Проверено 27 ноября 2013 г.
  19. ^ «Изучаем Clojure: динамическая типизация» . 7 декабря 2012 года . Проверено 26 ноября 2013 г.
  20. ^ Энгельберг, Марк (21 апреля 2009 г.). «Мысли о программировании» . Проверено 26 ноября 2013 г.
  21. ^ «clojure-contrib, пример ввода» . Проверено 26 ноября 2013 г.
  22. ^ «Clojure: обзор функционального программирования» . Проверено 26 ноября 2013 г.
  23. ^ «Введение в функциональное программирование» (PDF) . Проверено 26 ноября 2013 г.
  24. ^ «Ленивая и нетерпеливая оценка» (PDF) . Проверено 26 ноября 2013 г.
  25. ^ Харпер, Маккуин, Милнер. «Стандарт ML» (PDF) . Раздел 3.6 . {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  26. ^ Wikibooks: Стандартное программирование/типы машинного обучения
  27. ^ «Изменяемые и необязательные данные» . Проверено 28 ноября 2013 г.
  28. ^ Перейти обратно: а б «Функциональное программирование — OCaml» . Проверено 26 ноября 2013 г.
  29. ^ Хикки, Джейсон. «Введение в Objective Caml» (PDF) . Раздел 2.4 . Издательство Кембриджского университета. Архивировано из оригинала (PDF) 2 октября 2013 года . Проверено 26 ноября 2013 г.
  30. ^ «Определения типов и исключений» .
  31. ^ «Изучение OCaml — типы данных» .
  32. ^ «Изучение OCaml — обязательные функции» .
  33. ^ «Реализация классов типов как модулей OCaml» . Проверено 11 мая 2020 г.
  34. ^ «Изучение F#» . Проверено 6 декабря 2013 г.
  35. ^ «Ленивые вычисления (F#)» . Сеть разработчиков Microsoft . Проверено 26 ноября 2013 г.
  36. ^ «О F#» . Проверено 26 ноября 2013 г.
  37. ^ «Структуры — F#» . Проверено 11 мая 2020 г.
  38. ^ «Дискриминированные профсоюзы» .
  39. ^ «Спецификация языка F# 3.0: 1.1.2 Упрощение данных» (PDF) . Проверено 26 ноября 2013 г.
  40. ^ Перейти обратно: а б «Хаскелл Вики» . Проверено 26 ноября 2013 г.
  41. ^ «Ленивая оценка Haskell Wiki» . Проверено 26 ноября 2013 г.
  42. ^ «Типирование на Хаскеле» . ХаскеллВики . Проверено 26 ноября 2013 г.
  43. ^ «Абстрактный тип данных Haskell Wiki» . Проверено 26 ноября 2013 г.
  44. ^ «Хаскелл Вики» . Проверено 27 ноября 2013 г.
  45. ^ «Классы типов и перегрузка» .
  46. ^ Jump up to: a b "Scala Overview" (PDF). Retrieved 26 November 2013.
  47. ^ "Scala by Example" (PDF). Retrieved 26 November 2013.
  48. ^ Перейти обратно: а б «Справочник по Scala» (PDF) . Проверено 26 ноября 2013 г.
  49. ^ «Изменяемые и неизменяемые коллекции» . Проверено 26 ноября 2013 г.
  50. ^ «Руководство для неофитов по Scala, часть 12: Классы типов» . Проверено 29 ноября 2013 г.
  51. ^ Список мультипарадигмальных языков программирования#Обзор языка
  52. ^ Тао, Дэн. «Ленивый.js» . Дэн Тао . Проверено 26 ноября 2013 г.
  53. ^ «Обзор JavaScript» . Сеть разработчиков Mozilla . Сеть разработчиков Mozilla . Проверено 26 ноября 2013 г.
  54. ^ Фрэнк, Томас. «Добавьте класс в JavaScript» . thomasfrank.com . Архивировано из оригинала 8 декабря 2013 года . Проверено 26 ноября 2013 г.
  55. ^ Фаубион, Натан. «АДТ» . НПМ . Джойент, нодеджицу . Проверено 26 ноября 2013 г.
  56. ^ Неизменяемый объект#JavaScript
  57. ^ «Структуры данных Javascript» . Сеть разработчиков Mozilla . Сеть разработчиков Mozilla . Проверено 26 ноября 2013 г.
  58. ^ «Часто задаваемые вопросы — Чистота» .
  59. ^ Перейти обратно: а б с д Это Пласмейер, Ринус; Ван Экелен, Марко; Ван Гронинген, Джон (декабрь 2011 г.). Отчет о языке чистой версии 2.2 (PDF) . Кафедра программных технологий, Университет Неймегена . Проверено 23 мая 2018 г.
  60. ^ "Чистый" .
  61. ^ Перейти обратно: а б с «Официальный сайт Миранды» .
  62. ^ «Обзор Миранды» .
  63. ^ «Обзор Миранды» .
  64. ^ Тернер, Д.А. «Внедрение SASL». Технический отчет факультета компьютерных наук Университета Сент-Эндрюс. ТР/75/4.
  65. ^ Кан, Жиль; Берто, Ив; Юэ, Жерар; Леви, Жан-Жак; Плоткин, Гордон (24 сентября 2009 г.). Сети Кана на заре функционального программирования . ISBN  9780521518253 .
  66. ^ «Стрим — Эликсир v.1.6.0» .
  67. ^ «Справочное руководство по Эрлангу» . Проверено 27 ноября 2013 г.
  68. ^ «Язык программирования Erlang — абстрактные шаблоны» .
  69. ^ «Переполнение стека – как изменить запись в erlang?» . Проверено 15 декабря 2013 г.
  70. ^ Перейти обратно: а б с «Блог Elm — интерактивное программирование» . Архивировано из оригинала 6 октября 2013 года . Проверено 29 ноября 2013 г.
  71. ^ «Синтаксис Elm — алгебраические типы данных» . Архивировано из оригинала 13 марта 2016 года . Проверено 29 ноября 2013 г.
  72. ^ «Вывод типа» . Проверено 24 июля 2023 г.
  73. ^ «Функциональное программирование на Python» .
  74. ^ «Что такое Питон?» .
  75. ^ «Абстрактные типы данных и стеки» (PDF) .
  76. ^ Неизменяемый объект#Python
  77. ^ Перейти обратно: а б с д Это ж г «Обзор Идриса» . Проверено 6 декабря 2013 г.
  78. ^ «Котлин — Делегированные свойства» .
  79. ^ «kotlin-stdlib — kotlin.sequences» .
  80. ^ «Примечательные отличия от других языков — язык Джулии» .
  81. ^ Перейти обратно: а б с «Типы — язык Джулии» .
  82. ^ «Язык программирования Rust, обработка серии элементов с помощью итераторов» .
  83. ^ «Ржавый ящик «ленивый» » .
  84. ^ «Язык программирования Rust, типы данных» .
  85. ^ Перейти обратно: а б «Язык программирования Rust, особенности» .
  86. ^ «Язык программирования Rust, перечисления» .
  87. ^ «Язык программирования Rust, переменные и изменчивость» .
  88. ^ «D чистые функции» . Проверено 3 февраля 2024 г.
  89. ^ «D-безопасные функции» . Проверено 3 февраля 2024 г.
  90. ^ «Лень — Дланг Тур» . Проверено 7 апреля 2020 г.
  91. ^ «Система типов» . Проверено 7 апреля 2020 г.
  92. ^ «Неизменяемое — Дланг-тур» . Проверено 7 апреля 2020 г.
  93. ^ "Вывоз мусора" . Проверено 7 апреля 2020 г.