Обзор реализации основных возможностей функционального языка программирования в среде PascalABC.NET: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
(Новая: ==Реализовано с помощью узлов синтаксического дерева PascalABC :== * Подключение внешних сборок (import) * Типы ...) |
(→Обзор) |
||
Строка 15: | Строка 15: | ||
<ol> | <ol> | ||
<li TYPE=I> | <li TYPE=I> | ||
Математическим фундаментом функционального программирования является лямбда-исчисление. Такие языки как Haskell и Clean имеют 100% соответствие своей семантики с семантикой подразумеваемых конструкций лямбда-исчисления. Используя лямбда-абстракции можно определить булевские значения и условия, пары и кортежи и даже натуральные числа. | Математическим фундаментом функционального программирования является лямбда-исчисление. Такие языки как Haskell и Clean имеют 100% соответствие своей семантики с семантикой подразумеваемых конструкций лямбда-исчисления. Используя лямбда-абстракции можно определить булевские значения и условия, пары и кортежи и даже натуральные числа.<br> | ||
Натуральные числа и булевские выражения и операции с ними на мой взгляд проще определить, используя их определение в PascalABC. Прямую рекурсию также легче реализовать естественным путем. Для других конструкций целесообразно использовать лямбда-функции: | |||
<ol> | |||
<li> безымянные функции | |||
<li> именованные выражения | |||
<ol> | |||
<li TYPE=a> let x=s in T ↔ (λx.T) s | |||
<li TYPE=a> T where x=s ↔ (λx.T) s | |||
</ol> | |||
<li> определение правой части функции через лямбда-выражение, т.е. реализовать if, case и сравнение с образцом → благодаря этому будет возможно описание функции, используя if и case, внутри выражения | |||
<li> реализация функций высшего порядка и каррирования. | |||
</ol> | |||
<li TYPE=I> | |||
</ol> | </ol> |
Версия от 12:33, 12 ноября 2009
Реализовано с помощью узлов синтаксического дерева PascalABC :
- Подключение внешних сборок (import)
- Типы данных : булевский, вещественный, целый, символьный и строки
- Простые операции с ними
- Описание функций и главная функция main
- Сопоставление с образцом
- if, case, охранные выражения
- Операторы do, print, return
- Локальные переменные (where)
- Списки (перечислимые, прогрессии, бесконечные)
- Оператор ‘:’
- Частично обработка ошибок
- Комментарии --, <--, -->
Обзор
-
Математическим фундаментом функционального программирования является лямбда-исчисление. Такие языки как Haskell и Clean имеют 100% соответствие своей семантики с семантикой подразумеваемых конструкций лямбда-исчисления. Используя лямбда-абстракции можно определить булевские значения и условия, пары и кортежи и даже натуральные числа.
Натуральные числа и булевские выражения и операции с ними на мой взгляд проще определить, используя их определение в PascalABC. Прямую рекурсию также легче реализовать естественным путем. Для других конструкций целесообразно использовать лямбда-функции:- безымянные функции
- именованные выражения
- let x=s in T ↔ (λx.T) s
- T where x=s ↔ (λx.T) s
- определение правой части функции через лямбда-выражение, т.е. реализовать if, case и сравнение с образцом → благодаря этому будет возможно описание функции, используя if и case, внутри выражения
- реализация функций высшего порядка и каррирования.