Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте www.za4et.net.ru

Компьютеры, Программирование Компьютеры, Программирование

Функциональное программирование

Горшок торфяной для цветов.
Рекомендуются для выращивания крупной рассады различных овощных и цветочных, а также для укоренения саженцев декоративных, плодовых и
7 руб
Раздел: Горшки, ящики для рассады
Коврик для запекания, силиконовый "Пекарь".
Коврик "Пекарь", сделанный из силикона, поможет Вам готовить вкусную и красивую выпечку. Благодаря материалу коврика, выпечка не
202 руб
Раздел: Коврики силиконовые для выпечки
Ночник-проектор "Звездное небо, планеты", черный.
Оригинальный светильник-ночник-проектор. Корпус поворачивается от руки. Источник света: 1) Лампочка (от карманных фанариков); 2) Три
350 руб
Раздел: Ночники

Н.Н.Непейвода, Интернет Университет Информационных Технологий, I UI .ru Функциональное программирование объясняется на примере диалекта Commo Lisp языка LISP. Этот диалект наиболее распространен и имеет официальный стандарт. Commo Lisp может работать не только в пакетном режиме (когда он запускается как обычная программа), но и в режиме диалога. LISP - вероятно, первый из практически реализованных языков1, который основывался на серьезном теоретическом фундаменте и пытался поднять практику программирования до уровня концепций, а не наоборот - опустить концепции до уровня существовавшей на момент создания языка практики. В настоящий момент функциональное программирование представлено целым семейством языков, но LISP свои позиции не сдает. λ-абстракции В некоторых случаях осознанное усвоение концепций даже на самом низком уровне нереально без базовых теоретических сведений. А знакомство с таким базисом, в свою очередь, стимулирует значительно более глубокий интерес к теории и способствует пониманию того, что на высшие уровни знаний и умений не подняться без овладения теорией. Теоретической основой языка LISP является логика функциональности: комбинаторная логика или (по наименованию одного из основных понятий в наиболее популярной из нынешних ее формализаций) λ-исчисление. В λ-исчислении выразительные средства, на первый взгляд, крайне скупы. Имеются две базисные операции: применение функции к аргументу (λx) и квантор образования функции по выражению λx . В терминах λ-исчисления функция возведения числа в квадрат записывается как λx (sqrx) или, если быть ближе к обычным математическим обозначениям, λx x2. Основная операция - символьное вычисление применения функции к аргументу: (λx . Но эта операция может применяться в любом месте выражения, так что никакая конкретная дисциплина вычислений не фиксируется. Более того, функции могут вычисляться точно так же, как аргументы. Уже эта маленькая тонкость приводит к принципиальному расширению возможностей λ-исчисления по сравнению с обычными вызовами процедур. Если мы желаем ограничиться лишь ею, рассматривается типизированное λ-исчисление, в котором, как принято в большинстве современных систем программирования, значения строго разделены по типам. В типизированном λ-исчислении есть только типы функций, но этого хватает, поскольку функции могут принимать в качестве параметров и выдавать функции. Но в исходной своей форме λ-исчисление является нетипизированным, любой объект может быть и функцией, и аргументом, и, более того, функция может применяться к самой себе. Конечно же, при этом появляется возможность зацикливания, но без нее не обойдется ни одна &l ;универсальная> алгоритмическая система. Например, выражение (λx (xx) λx (xx)) вычисляется бесконечно, а чуть более сложное выражение ((λx λy x a) (λx (xx) λx (xx))) может либо дать a, либо зациклиться, в зависимости от выбора порядка его вычисления. Но все равно, если мы приходим к результату, то он определяется однозначно. Так что совместность вычислений не портит однозначности, если язык хорошо сконструирован.

Дж. Маккарти перенес идеи λ-исчисления в программирование, не потеряв практически ничего из исходных концепций. Далее, он заметил, что в рудиментарном виде в λ-исчислении появилось понятие списка, и перенес списки в качестве основных структур данных в свой язык. λ-исчислением было навеяно и соглашение языка LISP о том, что первый член списка трактуется как функция, применяемая к остальным. Списки и функциональные выражения Основной единицей данных для LISP-системы является список. Списки задаются следующим индуктивным определением. Пустой список () (обозначаемый также il) является списком. Если l1,. . . , l , ≥ 1 - атомы либо списки, то (l1, . . . , l ) - также список. Элементами списка (l1, . . . , l ) называются l1, . . . , l . Равенство списков задается следующим индуктивным определением. l = il тогда и только тогда, когда l также есть il. (l1, . . . , l ) = (k1, . . . , km) тогда и только тогда, когда = m и соответствующие li = ki. Пример 8.2.2. Все списки (), (()), ((())) и т. д. различны. Различны также и списки il, ( il, il), ( il, il, il) и так далее. Попарно различны и списки ((a,b), c), (a, (b,c)), (a,b,c), где a, b, c - различные атомы. Поскольку понятие, задаваемое индуктивным определением, должно строиться в результате конечного числа шагов применения определения, мы исключаем списки, ссылающиеся сами на себя. Списки в нашем рассмотрении изоморфны упорядоченным конечным деревьям, листьями которых являются il либо атомы. Вершины списка l задаются следующим индуктивным определением. Элементы списка являются его вершинами. Вершины элементов списка являются его вершинами. Длиной списка называется количество элементов в нем. Глубиной списка называется максимальное количество вложенных пар скобок в нем. Соединением списков (l1, . . . , l ) и (k1, . . . , km) называется список (l1, . . . , l , k1, . . . , km). Замена вершины a списка l на атом либо список m получается заменой поддерева l, соответствующего a, на дерево для m. Замена обозначается l будем обозначать результат замены нескольких вхождений вершины a на m. Атомами в языке lisp являются числа, имена, истина . Ложью служит пустой список il, который в принципе атомом не является, но в языке lisp при проверке на то, является ли он атомом, выдается истина. Точно так же выдается истина и при проверке, является ли он списком. Однако все списковые операции применимы к il, а те, которые работают с атомами, часто к нему неприменимы. Например, попытка присваивания значения выдает ошибку. Основная операция для задания списков (lis a b . . . z). Она вычисляет свои аргументы и собирает их в список. Для этой операции без вычисления аргументов есть скоропись '(a b . . . z). Она является частным случаем функции quo e (сокращенно обозначаемой '), которая запрещает всякие вычисления в своем аргументе и копирует его в результат так, как он есть. По традиции, элементарные операции разбора списков обозначаются именами, которые начинаются с c и кончаются на r, а в середине идет некоторая последовательность букв a и d; (car s) выделяет голову (первый член списка), (cdr s) - хвост (подсписок всех членов, начиная со второго).

Буквы a и d применяются, начиная с конца. Общее число символов в получающемся атоме должно быть не больше шести. Рассмотрим фрагмент диалога, иллюстрирующий эти операции. Как только в диалоге вводится законченное выражение, оно вычисляется либо выдается ошибка. > (cddr a) ((D E) F G) > (cddar a) - CDDAR: B is o a lis 1. Break > (cdaddr a) (E) Поле зрения и поле памяти Если не применены специальные операции блокирования вычислений, первый аргумент списка интерпретируется как функция, аргументами которой являются оставшиеся элементы списка. Это позволяет программу также задавать списком. Таким образом, в lisp, так же, как в сентенциальных языках, структура данных программы и поля памяти, обрабатываемого программой, совпадают. Видимо, это одна из удачнейших форм поддержания концептуального единства для высокоуровневых систем. В поле памяти с каждым атомом-именем могут быть связаны атрибуты. Стандартный атрибут - значение атома. Для установки этого атрибута есть функция (se q a om value), аналогичная присваиванию. Эта функция не вычисляет свой первый аргумент, она рассматривает его как имя, которому нужно приписать значение. Значение в языке lisp может быть локальным. Если мы изменили значение атома внутри некоторого блока, то такое 'присваивание' действует лишь внутри минимальных объемлющих его скобок и исчезает снаружи блока. Кроме значения, имена могут иметь сколько угодно других атрибутов, которые обязательно глобальны. Они принадлежат самому имени, а не блоку. Способ установки значений этих атрибутов несколько искусственный. Имеется еще одна функция se f, вычисляющая свой первый аргумент, дающий ссылку на место, которому можно приписать значение (например, на атрибут). Функция получения значения атрибута ge , даже если атрибута еще нет, указывает на его место. Следующий пример демонстрирует, как это работает. > (se f (ge 'b 'weigh ) '(125 kg)) (125 KG) > (ge 'b 'weigh ) (125 KG) Рассмотрим подробнее структуру данных языка lisp. Она является двухуровневой. На верхнем уровне имеется структура списков. На нижнем находится структура информации, сопоставленной атому. Она изображена на рис. 8.1. Оба этих уровня рекурсивно ссылаются друг на друга, например, атрибуты атома являются списками. Типы данных (в смысле программирования) в lisp есть, но они определяются динамически. В частности, если действительное число придано атому как значение, то тип атома становится floa . Модель вычислений LISP Для lisp (как и для любого другого функционального языка) не обязательно2 говорить, где и как размещаются структуры данных (списки). Рис. 8.1. Структура информации, сопоставленной атому языка LISP Их стоит рассматривать как сугубо математические объекты со сложной структурой, которая всегда точно указывает на текущие вычислительные элементы: До выполнения шага вычисления - это список, включающий имя функции и ее аргументы. Во время выполнения шага вычисления - это те фрагменты списочной структуры поля зрения, которые доступны для использования вычисляемой функцией (в частности, среди них есть список, связанный с именем функции, который определяет ее вычислительный процесс).

К концу младенческого возраста (10-11 до 14 месяцев) возникает этап функциональных действий: это более совершенные действия нанизывания, открывания, вкладывания, но если раньше ребенок выполнял действие одним показанным ему способом и на одних и тех же предметах, то теперь он пытается воспроизвести действие на всех возможных объектах. На первый взгляд кажется, что развитие действий -- спонтанный процесс. Действительно, казалось бы, ребенка первого года жизни почти ничему научить нельзя, но человек оказался хитрее. Д. Б. Эльконин говорил, что человек очень давно придумал программированное обучение для детей первого года жизни. Это -- игрушки, в которых запрограммированы те действия, которые с их помощью должен осуществить ребенок. Манипулирование ребенка с игрушками -это скрытая совместная деятельность. Здесь взрослый присутствует не непосредственно, а опосредованно, будучи как бы запрограммированным в игрушке. Хватание, направление к предмету стимулирует возникновение сидения-. Когда ребенок садится, перед ним открываются другие предметы

1. Лабораторная работа №5 по "Основам теории систем" (Транспортные задачи линейного программирования)

2. Современный газетный заголовок. Работа с заголовком на уроках русского языка в школе

3. Толково-исторический словарь к стихотворению М.Ю.Лермонтова «Бородино» (о работе со словом на уроке русского языка)

4. Работа с антонимами на уроках русского языка и чтения в начальной школе

5. Сиротство как социальная работа. Социальная работа с безработными.

6. Функциональные стили русского языка
7. Разработка программы на языке LISP для построения кривых Серпинского i-го порядка
8. Аналитический обзор книги "Программирование на языке ассемблера..."

9. Постановка задачи линейного программирования и двойственная задача линейного программирования.

10. Основы программирования на языке Паскаль

11. Программирование на языке CLIPS

12. Язык html: системы программирования html, особенности языка и реализация системы. Назначение, примеры программирования приложений

13. Первоначальные сведения о программировании на языке Pascal

14. Функциональные особенности русского языка

15. Взаимодействие функциональных стилей русского языка

16. Программирование на языке Java Script

Игрушка-плита со звуком и подсветкой"Miele".
Все как у мамы! Точная игрушечная копия фирменной плиты MIELE. Игрушка функциональная: конфорки и духовка светятся, издает реалистичные
1680 руб
Раздел: Плиты
Брошюровщик "Heidi Swapp. The Cinch".
Брошюровщик делает квадратные отверстия и предназначен для создания календарей, блокнотов, альбомом и много другого в домашних условиях.
8099 руб
Раздел: Прочее
Принцессы. 5 часов активной игры. Более 400 наклеек!. Ватт Фиона
Все девчонки очень любят наряжаться! А еще они с удовольствием поют и танцуют. Им нравится путешествовать, узнавать что-то новое и вообще
346 руб
Раздел: Альбомы, коллекции наклеек

17. Программирование на языке Си++

18. Лабораторная работа №4 по "Основам теории систем" (Послеоптимизационный анализ задач линейного программирования)

19. Лабораторные работы по программированию

20. Лабораторные работы по охране труда в Угольной промышленности

21. Лабораторные работы по теории и технологии информационных процессов

22. Работа с файлами (лабораторная работа)
23. Лабораторные работы (в ХГТУ)
24. Разработка цикла лабораторных работ по основам работы в WINDOWS 2000

25. Лабораторная работа №7 по "Основам теории систем" (Решение задачи коммивояжера методом ветвей и границ)

26. Лабораторные работы по экономико-математическому моделированию

27. Лабораторные работы - медицинское училище

28. Разработка модернизированного лабораторного стенда по проведению лабораторных работ в лаборатории импульсной техники

29. Электрорадиоматериалы. Методические указания к лабораторным работам

30. Лабораторная работа номер 5 по информатике

31. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ЛАБОРАТОРНЫМ РАБОТАМ ПО ФИЗИКЕ (МЕХАНИКА И ТЕРМОДИНАМИКА)

32. Лабораторные работы по теплотехнике

Подставка для ножей AK-208ST "Alpenkok", 10x10x22 см.
Размеры: 10х10х22 см. Материал корпуса: пластик. Внутренняя часть: полипропиленовое волокно. Предназначена для безопасного и гигиеничного
822 руб
Раздел: Подставки для ножей
Беговел "Funny Wheels Basic" (цвет: розовый).
Беговел - это современный аналог детского велосипеда без педалей для самых маленьких любителей спорта. Удобный и простой в
2550 руб
Раздел: Беговелы
Таз алюминиевый для варенья, 36 см / 10,6 л.
Легкая, прочная и практичная посуда, изготовлена из пищевого алюминия, имеет высокую стойкость к коррозии, равномерно нагревается за
648 руб
Раздел: Более 10 литров

33. Лабораторная работа по ВМС и ТКС

34. Лабораторная работа по экономике N2. ЛЭТИ 4 курс

35. Лабораторная работа

36. Электрорадиоматериалы. Методические указания к лабораторным работам

37. Отчет по лабораторным работам

38. Лабораторные работы по деталям машин
39. Лабораторная работа №1
40. Отчет по лабораторной работе

41. Отчет по лабораторной работе Термодинамика

42. Основы электробезопасности при выполнении лабораторных работ

43. Приемы обращения с лабораторным оборудованием и основы техники безопасности при работе в химическом кабинете

44. Лабораторная работа № 16

45. Лабораторная работа №11

46. Лабораторная работа №5

47. Лабораторная работа №7

48. Лабораторная работа по дисциплине теория и проектирование ЭВМ

Карандаши акварельные, с кисточкой, 24 цвета.
Шестигранный корпус покрыт лаком на водной основе. Карандаши заточенные. Длина карандаша: 176 мм. Очень мягкие, не крошатся, цвета яркие,
349 руб
Раздел: Акварельные
Велосипед трехколесный Moby Kids "Leader 360°. AIR Car", с разворотным сиденьем, цвет:.
Детский трёхколёсный велосипед премиум-класса "Leader 360° 12x10 AIR Car" от торговой марки Moby Kids. Эта модель
7324 руб
Раздел: Трехколесные
Батут.
Диаметр рамы: 183 см. Высота батута: 46 см. Каркас из 1,5 мм гальванизированной стали. Соединение прыжковой поверхности с рамой: 42
6627 руб
Раздел: Батуты, надувные центры

49. Лабораторные работы по Теории вычислительных процессов и структур

50. Лабораторные работы по системному ПО

51. Отчет по лабораторной работе №2

52. Лабораторная работа по информатике ( задания )

53. Лабораторные работы в медВУЗе

54. Разработка виртуальной лабораторной работы на базе виртуальной асинхронной машины в среде MATLAB
55. Лабораторные работы по кулинарии
56. Разработка лабораторно-практических работ по технологии

57. Сборник лабораторных работ по механике

58. Структура и программирование ПЛИС фирмы Altera в САПР Quartus II, её применение в лабораторном стенде

59. Контрольная работа по функциональной стилистике

60. Аттестационная работа по функциональной диагностике

61. Программирование. Контрольная работа

62. Работа со структурами в языке программирования Си++

63. Характеристика работы предприятия, его функциональная деятельность и особенности управления

64. Разработка основных разделов проекта производства работ

Банка для сыпучих продуктов "Лавандовый букет", 9,5x13 см, 500 мл.
Банка для сыпучих продуктов прекрасно впишется в кухонный интерьер. Материал: доломит. Объем: 500 мл. Размер: 9,5x13 см.
307 руб
Раздел: Керамические
Циркуль металлический "Stop System" с грифелем 2 мм.
Эксклюзивная инновация. Кронцепция Stop System фиксирует штанги циркуля в нужном положении, предотвращая их нежелательное смещение, и
357 руб
Раздел: Циркули, чертежные инструменты
Игра "Зайкина горка" №1, классические цвета.
«Зайкина горка» – это увлекательное занятие: лабиринт для разноцветных шариков. Веселые шарики катаются по лабиринту горки и развлекают
530 руб
Раздел: Сортеры, логические игрушки

65. Кровельные работы

66. Реактивные двигатели, устройство, принцип работы

67. Оценка безотказной работы технической аппаратуры (задачи)

68. Принцип работы и назначение телескопа

69. Отчёт по лабараторным работам по биологии за 1 семестр

70. Пути и способы повышения устойчивости работы РЭА
71. Организация боевых действий подразделений войск ПВО СВ (Методические указания к самостоятельной работе студентов под руководством преподавателя по тактико-специальной подготовке)
72. Воспитательная работа с личным составом в период подготовки к воинской службе (Виховна робота з особовим складом у період підготовки до несення служби військ)

73. Обеспечение работы с/х предприятия в условиях радиактивного заражения (WinWord)

74. Пути и способы повышения устойчивости работы объектов экономики в чрезвычайных ситуациях

75. Итоги работы портов: Одесса, Ильичёвск, Николаев, Мариуполь и Херсон за 2003 год

76. Буровые работы

77. Состав нормативных документов, регламентирующих организацию работы с документами

78. Контрольная работа по всеобщей истории государства и права

79. Международная организация труда- создание, структура, задачи и организация её работы

80. Статус депутатов местных Советов и формы их работы

Набор детской посуды "Авто", 3 предмета.
Набор посуды для детей включает в себя три предмета: суповую тарелку, обеденную тарелку и кружку. Набор упакован в красочную, подарочную
397 руб
Раздел: Наборы для кормления
Диванчик раскладной "Кошечка".
Диван "Кошечка" - красивый, функциональный, надежный детский диван. Он способен украсить детскую комнату и может использоваться
2791 руб
Раздел: Прочие
Карандаши цветные "Triocolor", 24 цвета.
Трехгранная эргономичная форма корпуса. Яркие, насыщенные цвета, линии мягко ложатся на бумагу. Грифель устойчив к механическим
337 руб
Раздел: 13-24 цвета

81. Порядок увольнения с работы и его оформление

82. Прием на постоянное место работы

83. Особенности рассмотрения в судах трудовых споров о восстановлении на работе

84. Контрольная работа по экологическому праву

85. Контрольная работа по Английскому языку

86. Контрольная работа по английскому языку (Тюмень)
87. Принципы работы редактора над статьями в энциклопедическом издании (на примере детских энциклопедий издательства "Дорлинг Киндерсли")
88. Сравнительный анализ портретов Ф.И Шаляпина. Работы Б.М Кустодиева и К.А Коровина

89. Культурологическая проблематика в работе Л.Н.Гумилева "Этногенез и биосфера Земли"

90. О развитии навыков работы над полифонией

91. Начальный этап работы над музыкальным произведением

92. Работа с редактором Vi. Другие текстовые редакторы UNIX

93. Принципы работы системы управления параллельными процессами в локальных сетях компьютеров

94. Работа маршрутизаторов в компьютерной сети

95. Диагностика и устранение неисправностей при работе в локальной сети

96. Информационные потоки в ЭВМ. Алгоритм работы процессора

Бумага "Color copy", белая, А4, 250 гр/м2, 125 листов.
Бумага предназначена для цветного копирования и полноцветной печати. Для нее характерна повышенная плотность, благодаря которой
613 руб
Раздел: Формата А4 и меньше
Батут.
Каркас: сталь Полотно: дюралевая нейлоновая сетка. Окантовка: прочный защитный материал. Количество ножек: 6 шт. Размер: 91 см. Допустимая
2821 руб
Раздел: Батуты, надувные центры
Свечи чайные белые (100 штук).
Свечи чайные в гильзе. Количество: 100 штук. Цвет: белый.
361 руб
Раздел: Свечи чайные

97. Принцип программного управления. Микропроцессор. Алгоритм работы процессора

98. Влияние мониторов на зрение. Мониторы с электронно-лучевой трубкой (ЭЛТ) или жидкокристаллические (ЖК). Усталость глаз при работе с мониторами

99. Разработка системы управления работой коммерческой компании

100. Программное сопровождение практических работ по курсу "Конструирование и проектирование одежды"


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.