Сравнение языков программирования (функциональное программирование)
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
На этой странице представлены таблицы сравнения инструкций функционального программирования между языками программирования. Сравнение базовых инструкций императивной парадигмы осуществляется путем сравнения базовых инструкций .
Список операций
[ редактировать ]Приложения функций и списки
[ редактировать ]Для краткости эти слова будут иметь указанные значения в следующих таблицах (если не указано, что они являются частью синтаксиса языка):
- функция
- Функция. Может быть унарным или n-арным (или всегда унарным для языков без n-арных функций).
- функция1 , функция2 и т. д.
- функции определенной арности. func (без номера) аналогичен func1 , также известный как проекция во многих языках.
- до
- Унарная функция, возвращающая логическое значение. ( Тип ML : 'a -> bool ) (C-подобный тип:
bool pred<T>(T t)
). - список
- Список, над которым ведется работа.
- аргументы
- Разделенный запятыми список одного или нескольких имен аргументов в форме аргумент1, аргумент2, ..., аргумент .
- шаблон
- Шаблон в языках с сопоставлением шаблонов .
- вал
- Любое соответствующее значение в зависимости от контекста.
идентификатор лямбда | лямбда | карта | применять | фильтр | складывать | сумма | |
---|---|---|---|---|---|---|---|
Питон | лямбда х : х | лямбда -аргументы : выражение | карта(функция, список ) | nfunc(*аргументы) | фильтр(пред, список ) | functools.reduce(func2, список ) | сумма ( список ) |
Математика | #& | (выражение)& (аргументы #1 , №2 и т. д.)
Функция[{ аргументы },выражение] |
Карта[функция, список ]
функция /@ список |
Применить[nfunc, args ]
nfunc@@args |
Выбрать[ список , пред] | Свернуть[func2, val, список ] | Применить[Плюс, список ]
Плюс @@ список |
С# [ 1 ] | х => х | (args) => выражение | Enumerable.Select( список , функция) | Требует размышления | Enumerable.Where( список , пред) | Enumerable.Aggregate( список , func2)
Enumerable.Aggregate( список , значение, func2) |
Enumerable.Sum( список )
Enumerable.Sum( список , функция) |
Визуальный Бейсик .NET [ 1 ] | Функция( х ) х | Функция( аргументы ) выражение | |||||
Ф# [ 2 ] (также можно использовать Enumerable) | идентификатор (встроенный)
весело х -> х |
забавный узор -> выражение | функций Seq.map Список | Seq.filter Предварительный список | значений Seq.fold func2 Список | последовательных сумм Список
Seq.sumПо списку функций |
Числовые операции со списками
[ редактировать ]- комп
- двоичная функция, возвращающая значение, указывающее порядок сортировки (целое число в большинстве языков).
сортировать | Макс | мин | |
---|---|---|---|
Питон | отсортированный ( список ) | Макс ( список ) | мин( список ) |
Математика | Сортировать[ список ] | Макс[ список ] | Мин[ список ] |
С# [ 1 ] | Enumerable.OrderBy( список , комп) | Enumerable.Max( список , функция) | Enumerable.Min( список , функция) |
Визуальный Бейсик .NET [ 1 ] | |||
Ф# [ 2 ] | последовательной сортировки Список
комп. Seq.sortBy список |
сек.макс.
seq.maxПо списку функций |
сек.мин
seq.minПо списку функций |
Итерации в списках
[ редактировать ]группировать по | |
---|---|
Питон | itertools.groupby( список , функция) [ 3 ] |
Математика | GroupBy[ список , функция] [ вольфрам 1 ] |
С# [ 1 ] | Enumerable.GroupBy( список , функция) |
Визуальный Бейсик .NET [ 1 ] | |
Ф# [ 2 ] | seq.groupПо списку функций |
Генерация списков с помощью инструментов комбинаторики
[ редактировать ]- начинать
- первое значение диапазона.
- шаг
- приращение диапазона.
- считать
- количество предметов в диапазоне.
- последний
- включая последнее значение диапазона.
- конец
- исключительное последнее значение диапазона.
Генерировать диапазон (лениво) | Бесконечный диапазон (лениво) | |
---|---|---|
Питон | xrange(начало, конец, шаг) (Python 2) [ 4 ]
диапазон (начало, конец, шаг) (Python 3) [ 5 ] |
itertools.count(начало, шаг) |
С# [ 1 ] | Enumerable.Range(начало, количество) | Enumerable.Range(начало, Int32.MaxValue) |
Визуальный Бейсик .NET [ 1 ] | ||
Ф# [ 2 ] | последовательность { начало..шаг..последний } | Seq.initБесконечная функция |
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д и ж г час «Перечисляемый класс (System.Linq)» . Документы Майкрософт . Майкрософт . Проверено 29 августа 2019 г.
- ^ Перейти обратно: а б с д «Модуль Collections.Seq (F#)» . Сеть разработчиков Microsoft . Майкрософт . Проверено 29 августа 2019 г.
- ^ «itertools — Функции, создающие итераторы для эффективного цикла» . Документация Python 3.7.4 . Фонд программного обеспечения Python . Проверено 29 августа 2019 г.
- ^ «Встроенные функции» . Документация Python 2.7.16 . Фонд программного обеспечения Python . Проверено 29 августа 2019 г.
- ^ «Встроенные типы» . Документация Python 3.7.4 . Фонд программного обеспечения Python . Проверено 29 августа 2019 г.
- ^ «Группировать по» . Документация по языку Wolfram . Вольфрам . Проверено 29 августа 2019 г.