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

Модуль IArray

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

В модуле IArray описывается общий интерфейс к произвольным  массивам, а потому к этому интерфейсу добавлен набор утилитарных функций для работы с произвольным массивом. Эти функции обобщают одноимённые функции из головного модуля Array  (см. раздел 8.1.). Также в этом модуле обобщается и сам алгебраический тип данных, представляющий массивы. Поэтому при подключении модуля IArray

Читать »

Модуль Foldable

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

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

Другими словами, в этом модуле определяется класс для представления типов, на которые можно обобщить функции foldl (см. стр. 253) и foldr (см. стр. 254). В теории категорий такой интерфейс называется катаморфизмом. Использование:

Читать »

Пакет модулей Foreign

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

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

Что интересно, в поставке стандартных модулей имеется модуль Foreign, который необходимо использовать следующим образом:

Читать »

Сводная информация

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

Таким образом, перечисленные и описанные в предыдущих главах программные сущности являются тем, что предоставляет язык Haskell для работы на поприще создания программного  обеспечения. Действительно, в языке Haskell всего пять видов программных сущностей:

Читать »

Функции  высшего порядка

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

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

Читать »

Модуль Dynamic

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

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

import  Data.Dynamic

Тип: Dynamic

Читать »

Модуль Graph

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

В модуле Graph определены функции для алгоритмов работы с графами, которые описаны в работе [11]. Использование модуля:

import  Data.Graph

Во внешнем интерфейсе этого модуля имеется несколько программных сущностей. Это алгебраический тип данных и пара функций для манипуляции им. Тип: SCC

Читать »

Получение страниц памяти

Добавлено Дата: 8 May, 2012 категория: Ядро Linux

Теперь, имея  некоторое понятие  о  том, как  ядро  упрапляет памятью с помощью страниц, зон  и  так  далее, давайте  рассмотрим интерфейсы,  которые реализованы в  ядре  для  того,  чтобы  выделять  и  освобождать  память   внутри  ядра.  Ядро  предоставляет  один  низкоуровневый интерфейс для  выделения памяти и несколько интерфейсов для  доступа  к  ней.  Все  эти  интерфейсы выделяют память  в объеме, кратном размеру  страницы,  и  определены в файле   <linux/gfp.h> .  Основная функция выделения памяти  следующая.

Читать »

Двойная буферизация воспроизведения звука

Добавлено Дата: 7 May, 2012 категория: Программирование звука

Выбор устройства воспроизведения звука в операционной системе Mac OS несложен.  Сообщите  системе тип  производимого  вашей  программой  звука  (в  нашем случае  sampledSynth),  а  система  подберет  вам  подходящее  устройство.  Для  использования   двойной   буферизации   понадобится   структура   SndDoubleBufferHeader,  в  которой  содержатся  указатели  на  две  структуры  SndDoubleBuffer. Последние и являются непосредственно буферами, требующими инициализации.

Читать »

Prelude: Функции – ЧАСТЬ 2

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

id  ::  a  ->  a id  x  =  x

Функция: init

Описание: возвращает список без последнего аргумента. Исходный список должен содержать, по крайней мере, один элемент. На пустом списке функция генерирует сообщение об ошибке.

Читать »

Работа со связанными списками

Добавлено Дата: 4 May, 2012 категория: Ядро Linux

Для работы со  связанными списками ядро предоставляет семейство функций. Все они принимают указатели на одну или более структур lis t  head. Все функции выполнены как функции с подстановкой тела (inline) на языке С, и их все можно найти в  файле <linux/list.h> .

Читать »

Функцииmmap() и do_mmap(): создание интервала адресов

Добавлено Дата: 4 May, 2012 категория: Ядро Linux

Функция do_mmap() используется ядром  для создания нового  линейного интервала адресов.  Говорить, что эта функция создает  новую  область  VMA, — технически не корректно, поскольку если  создаваемый интервал адресов  является смежным с существующим интервалом адресов  и у этих интервалов одинаковые права  доступа, то два интервала объединяются в один.  Если это невозможно, то создается новая  область VMA. В любом  случае  функция do_mmap() — это функция, которая добавляет интервал адресов  к адресному пространству процесса, независимо от того, создается ли при  этом  новая  область  VMA или  расширяется существующая.

Читать »

Модуль ForeignPtr

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

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

Читать »

Генерация ошибок и выдача информации

Добавлено Дата: 3 May, 2012 категория: Ядро Linux

Существует несколько  подпрограмм  ядра,  которые позволяют легко  сигнализировать о  наличии дефектов кода, обеспечивать объявления об  ошибках и выводить необходимую информацию.  Две наиболее часто используемые — это BUG()  и BUG_ON(). При вызове эти функции создают ситуацию oops, которая проявляется в  выводе обратной трассировки стека ядра и сообщения об  ошибке. Каким образом эти вызовы генерируют ситуацию oops зависит от  аппаратной платформы. Для большинства аппаратных платформ вызовы BUG()  и BUG_ON()   определяются как некоторая недопустимая машинная команда, которая приводит к выводу желаемого сообщения oops.

Читать »

Управление прерываниями

Добавлено Дата: 25 April, 2012 категория: Ядро Linux

В ядре  Linux  реализовано семейство интерфейсов для управления состояниями прерываний в машине. Эти  интерфейсы позволяют запрещать прерывания для текущего  процессора или  маскировать линию  прерывания для всей  машины. Эти функции очень  сильно  зависят  от аппаратной платформы и  находятся  в файлах

Читать »