Обзор реализации основных возможностей функционального языка программирования в среде 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)
  • Списки (перечислимые, прогрессии, бесконечные)
  • Оператор ‘:’
  • Частично обработка ошибок
  • Комментарии --, <--, -->

Обзор

  1. Математическим фундаментом функционального программирования является лямбда-исчисление. Такие языки как Haskell и Clean имеют 100% соответствие своей семантики с семантикой подразумеваемых конструкций лямбда-исчисления. Используя лямбда-абстракции можно определить булевские значения и условия, пары и кортежи и даже натуральные числа.
    Натуральные числа и булевские выражения и операции с ними на мой взгляд проще определить, используя их определение в PascalABC. Прямую рекурсию также легче реализовать естественным путем. Для других конструкций целесообразно использовать лямбда-функции:
    1. безымянные функции
    2. именованные выражения
      1. let x=s in T ↔ (λx.T) s
      2. T where x=s ↔ (λx.T) s
    3. определение правой части функции через лямбда-выражение, т.е. реализовать if, case и сравнение с образцом → благодаря этому будет возможно описание функции, используя if и case, внутри выражения
    4. реализация функций высшего порядка и каррирования.