|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[0] Введение в Стандартный ML • ML является функциональным языком программирования. Функции являются полноправными объектами: они могут передаваться в качестве аргументов, вырабатываться в качестве результата и храниться в переменных. Основной способ организации управления в программах на ML - рекурсивное применение функций. жение анализируется, компилируется и исполняется, и значение, полученное в результате исполнения предложения, вместе с его типом выдается пользователю. мое выражение имеет тип, который автоматически определяется компилятором. Строгая типизация гарантирует, что в период исполнения не может возникнуть ошибок в согласовании типов.1 ложение языка обладает однозначно определяемой наиболее общей типизацией, которая определяет контексты, в которых предложение может быть использовано. пы - весьма полезный механизм в модульном программировании. Новые типы данных могут быть определены вместе с набором операций над значениями этих типов. Детали внутренней структуры 1 Заметим, что ошибки такого рода - весьма распространенная вещь, и диагностика их на этапе компиляции заметно облегчает отладку программы. (Прим. перев.) ГЛАВА 1. ВВЕДЕНИЕ значений и реализации операций скрыты от программиста, использующего данные абстрактного типа; высокая степень изоляции дает существенные преимущества при разработке и сопровождении больших программ. • В ML области действия идентификаторов определяются статически. Смысл всех идентификаторов в программе определяется статически, что позволяет создавать более модульные и более эффективные программы. ключителъных событий. Механизм обработки исключительных событий является удобным средством описания действий в ненормальных ситуациях, возникающих в период исполнения программы. вающие возможность разработки больших программ по частям. Программа на ML строится как набор взаимозависимых структур, связываемых друг с другом с помощью функторов. Раздельная компиляция осуществляется посредством экспорта и импорта функторов. Стандартный ML является новейшим из семейства языков, берущих свое начало от языка ML, разработанного в Эдинбурге Майком Гордоном, Робином Милнером и Крисом Уодсвортом в середине 70-х годов [4]. С тех пор возникло много диалектов и реализаций, как в самом Эдинбурге, так и в других местах. Стандартный ML основывается на синтезе многих идей, воплощенных в различных вариантах языка (из которых в первую очередь следует отметить диалект, разработанный Лукой Кар-делли [3]), и на идеях функционального языка НОРЕ, разработанного Родом Берстелом, Дэйвом Мак-Квином и Доном Санёлла [2]. Последнее добавление в язык - модульная структура, предложенная Дэйвом Мак-Квином в [6]. Эти лекции являются неформальным введением в язык, описывающим его возможности и способы использования, и не должны рассматриваться как формальное описание Стандартного ML. Они писалась и переписывалась в течение нескольких лет, и сейчас нуждаются в некоторой переработке с целью отразить изменения, произошедшие в языке, и опыт его использования. Поэтому автор будет рад любым предложениям от читателей по этому вопросу. Формальное определение Стандартного ML имеется в [7]. Несколько менее формальное (и несколько устаревшее) описание имеется в Отчете Эдинбургского университета [5]. Для детального знакомства с языком читателю следует обратиться к его формальному определению. Глава 2 Ядро языка 2.1 Работа с ML в режиме диалога Практически все реализации ML являются интерактивными; они основываются на диалоге типа "прочесть-вычислить-напечатать" (хорошо знакомому пользователям LISP). В процессе такого диалога пользователь вводит выражение, ML-система его анализирует, компилирует, выполняет и выдает результат на терминал1. Вот образец диалога: > 5 : int ML запрашивает ввод с помощью "- "и предваряет вывод "> ". Пользователь вводит фразу "3+2". ML вычисляет выражение и печатает его значение, "5", вместе с типом значения, "int". В процессе диалога могут возникать различные виды ошибок. В основном они распадаются на три категории: синтаксические ошибки, ошибки в согласовании типов и ошибки времени исполнения. Вероятно, вы знакомы с синтаксическими ошибками и ошибками времени исполнения по вашему опыту работы с другими языками программирования. Приведем пример того, что происходит, когда введена синтаксически неправильная фраза: -let х=3 in х end; Parse error: Was expecting "in" in ... let <?> x ... Ошибки времени исполнения (как, например, деление на 0) являются одним из видов исключительных событий (подробно они будут рассмот- 1 Детали интерактивной работы с ML-системой меняются от одной реализации к другой, но "дух" общения одинаков во всех известных автору системах. Примеры в настоящей книге подготовлены с использованием Эдинбургского компилятора 1988 года. |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||