Главная » Статьи для тега "класса"

Структура главной функции в минимальном приложении

Добавлено Дата: 7 July, 2012 категория: Win32 API

Минимальное приложение Windows состоит из 2 частей:

1.                главной функции с именем WinMain, включающей цикл обра­ботки сообщений;

2.                оконной функции WndProc.

Читать »

Контекст  и прикладные функции

Добавлено Дата: 30 June, 2012 категория: Haskell

Всё вышеперечисленное так и не позволило ответить на самый главный вопрос: для чего нужны классы, особенно принимая  во внимание их столь абстрактную природу? Действительно, какой смысл создавать классы, если их семантика определяется вне  программы? Только ради перегрузки имён функций? Но для этого  можно было использовать другие, более понятные механизмы — например, перегрузка имён функций в языке  C не использует  никаких  классов и очень даже понятна.

Читать »

Список строк List Box

Добавлено Дата: 30 June, 2012 категория: Win32 API

Элемент управления «список строк» создается на основе предопре­деленного класса «listbox», отвечающего за формирование окна, в кли­ентской области которого отображается список, из которого можно осуществлять выбор одного или нескольких элементов. Если размеры окна для списка не позволяют вместить все строки, то создается поло­са прокрутки. В списке можно выбрать либо один элемент, либо не­сколько. Элементы списка могут быть удалены или добавлены.

Читать »

Модуль Storable интерфейс для маршализации

Добавлено Дата: 24 June, 2012 категория: Haskell

В модуле Storable описан важнейший интерфейс для маршализации — класс Storable. Этот класс предоставляет интерфейсные функции для осуществления примитивного маршалинга типов данных, а потому является непосредственной частью системы FFI языка Haskell. Предполагается, что этот модуль подключается в проект при помощи реимпорта из модуля Foreign, однако если имеется необходимость использования этого модуля отдельно, его можно подключить следующим образом:

Читать »

Модуль Read

Добавлено Дата: 23 June, 2012 категория: Haskell

В модуле Read определены  программные сущности, позволяющие  преобразовывать строки в значения произвольных типов. Этот  модуль, как и многие иные в стандартной поставке, является экспериментальным, созданным с целью разгрузки  стандартного модуля  Prelude  от программных сущностей. Правда, необходимо отметить,  что  в этом модуле для компилятора  GHC имеются расширенные  возможности по использованию функций синтаксического анализа. В частности, создана улучшенная версия класса Read (см. стр. 121), которая позволяет производить  более эффективный синтаксический анализ.

Читать »

Модуль Arrow

Добавлено Дата: 13 June, 2012 категория: Haskell

содержит базовое определение стрелки, основанное на теоретической работе [9], а также  отчасти на работе [21]. В  этих статьях описаны правила, которым должны удовлетворять описываемые в модуле комбинаторы. Дополнительные материалы по стрелкам могут быть найдены по адресу в интернете http://www.haskell.org/arrows/.

Читать »

Модуль Printf

Добавлено Дата: 12 June, 2012 категория: Haskell

В модуле Printf содержатся определения программных сущностей, которые позволяют форматировать строки на основе  значений других типов в соответствии с поведением функции printf (и ей подобных) из языка C. Использование:

import Text.Printf

В модуле имеются две функции и четыре специализированных класса, которые позволяют представлять типы для использования  с функциями. Первыми имеет смысл рассмотреть именно функции, поскольку классы являются вспомогательными для них.

Читать »

Prelude: Классы и их экземпляры

Добавлено Дата: 10 June, 2012 категория: Haskell

Класс:  Bounded

Описание: экземпляры этого класса представляют  собой множества, ограниченные сверху и снизу. Это означает, что имеются минимальный элемент множества и максимальный элемент множества. Однако само множество вполне может быть и неупорядоченным  — в нём может отсутствовать отношение порядка. Определение:

Читать »

Модуль Eq

Добавлено Дата: 10 June, 2012 категория: Haskell

также предназначен для разгрузки стандартного модуля Prelude. В него вынесено определение класса Eq (см. стр. 117) и определения нескольких десятков экземпляров для этого класса. Использование:

import  Data.Eq

Класс Eq определяет  класс типов, в которых имеет смысл отношение сравнения. Соответственно, определены два метода: (==) (равенство значений) и (/=)  (неравенство значений). Для экземпляра можно определять либо один метод, либо другой, либо оба вместе. Все базовые типы данных являются экземплярами  этого класса. Более того, для произвольного алгебраического типа данных можно автоматически построить экземпляр этого класса, если каждый из компонентов типа является экземпляром класса Eq.

Читать »

Модуль Applicative

Добавлено Дата: 8 June, 2012 категория: Haskell

Этот модуль описывает структуру, промежуточную между монадой и функтором. Эта структура предоставляет выстраивать  чистые выражения в последовательности,  но не предоставляет  возможности связывания. Технически эта структура является строго-нестрогим моноидальным функтором — прикладным функтором. Детально о такой структуре описывается в [15]. Главный класс этого модуля очень полезен вместе с экземплярами класса  Traversable (см. раздел 8.28.).

Читать »

Абстракция  данных при помощи модулей

Добавлено Дата: 5 June, 2012 категория: Haskell

Абстрактным типом данных называют такой тип,  который  предоставляет для работы с элементами этого типа определённый набор функций, а также возможность создавать элементы этого типа при  помощи специальных функций. Вся внутренняя структура такого типа спрятана от разработчика  программного  обеспечения — в этом и заключается суть абстракции. Абстрактный тип данных определяет набор независимых от конкретной реализации типа функций для оперирования его значениями.

Читать »

Модуль MArray

Добавлено Дата: 31 May, 2012 категория: Haskell

содержит описания класса и утилитарных функций, которые обеспечивают работу с изменяемыми массивами. Использование модуля:

import Data.Array.MArray

Типы, которые поддерживают описываемый в этом модуле интерфейс (класс), в свою очередь описаны в модулях IO (см. подраздел  8.1.4.),  ST  (см. подраздел 8.1.6.) и Storable (см. подраздел 8.1.7.).

Читать »

Экземпляр  — связь между  типом и классом

Добавлено Дата: 27 May, 2012 категория: Haskell

Система типизации в языке  Haskell предоставляет  поистине  удивительную технологию, которая позволяет создавать дополнения к интерфейсам (наборам функций, оперирующих с заданным типом данных) «на лету». Эта технология основывается на понятии экземпляра класса.

Читать »

Определение нескольких экземпляров для уникальной пары (класс, тип)

Добавлено Дата: 26 May, 2012 категория: Haskell

В языке Haskell запрещено создание нескольких экземпляров некоторого класса для одного и  того же  типа данных.  Действительно, в противном случае транслятор языка не смог бы  определить, какой именно экземпляр использовать при рассмотрении прикладных функций, когда такие прикладные функции работают с экземплярами некоторых классов. В стандарте языка запрещено даже  определять разные экземпляры одного и того же  класса для типов,  являющихся общим и конкретизированным вариантом одного алгебраического типа данных (например, нельзя создать экземпляры класса Eq для типов Maybe  a и Maybe  Int, поскольку более общий тип, использующий параметрический полиморфизм, перекрывает собой конкретизированный, и в этом случае транслятор также находится в затруднении). Хотя последнее ограничение  снято в некоторых компиляторах (например, GHC), оно обычно входит в состав нестандартизированных расширений языка.

Читать »

Модуль Ix

Добавлено Дата: 25 May, 2012 категория: Haskell

В модуле Ix описан класс, который используется как интерфейс к типам данных, представляющих значения, которые  могут  использоваться в качестве  индексов (индексация сопоставляет  некоторое непрерывное множество с набором значений экземпляров описываемого класса). Например, этот класс используется для индексации массивов IArray (см. стр. 233) и MArray (см. стр. 237). Использование:

Читать »