Научная статья на тему 'О некоторых видах фантомных типов данных'

О некоторых видах фантомных типов данных Текст научной статьи по специальности «Математика»

CC BY
51
15
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «О некоторых видах фантомных типов данных»

4, Вагнер В. В. Теория отношений и алгебра частичных отображений // Теория полугрупп и её приложения, Саратов : Изд-во Сарат, ун-та, 1965, Вып. 1, С, 3-178,

5, Новиков В. Е. Концепты и функциональные зависимости // Математика, Механика : сб. науч. тр. Саратов : Изд-во Сарат, ун-та, 2007, Вып. 9, С, 68-70,

УДК 519.682.1

А. А. Орел

О НЕКОТОРЫХ ВИДАХ ФАНТОМНЫХ ТИПОВ ДАННЫХ

В работе [1] предложено при конструировании фантомных типов данных использовать в качестве определяющего отношения отношение предпорядка, которому соответствует тип функциональной зависимости, представленный на языке Haskell конструктором типа (->)• На основании рассмотренного отношения была решена задача статической проверки типов. Однако данное отношение не обладает свойством симметричпо-сти, что накладывает ограничения на область его применения. Фантомные типы данных, построенные на основе этого отношения, не позволяют, например, решить задачу динамической проверки типов [2]. Для решения такой задачи требуется реализация свойства рефлективности с помощью функции с сигнатурой ref 1 : : ТЕ a b, где ТЕ a b - тип данных, соответствующий отношению эквивалентности, и реализация двух функций from и to с сигнатурами

from :: ТЕ a b -> а -> b и to :: ТЕ a b -> b -> а

Заметим, что при наличии свойства симметричности, реализуемого функцией symm с сигнатурой symm : : ТЕ a b -> ТЕ b а, достаточно иметь лишь одну из функций from или to, например from, так как to может быть получена как композиция from . symm.

Для определения базового типа ТЕ a b можно воспользоваться отношением эквивалентности в виде (А => В) & (В => А), реализуемым в силу изоморфизма Карри — Ховарда типом пары функциональных зависимостей (а -> b, b -> а) [3], или использовать на основе принципа Лейбница отношение эквивалентности в видеУ f. f а -> f b (см. [2]).

Рассмотрим другие возможности. В начале определим отношение эквивалентности с использованием альтернативы ( | ) в форме (А | В) => (А & В). Соответствующий тип данных ТЕ a b можно представить средствами языка Haskell в виде

type ТЕ a b = Either a b -> (a, b)

76

Функции ref 1, from и to могут быть реализованы следующим образом:

ref1 :: ТЕ а а

ref1 (Left х) = (х, х)

ref1 (Right х) = (х, х)

from :: ТЕ a b -> а -> b from f х = snd (f (Left x))

to : : ТЕ a b -> b -> a to fx— fst (f (Right x))

Поскольку отношение эквивалентности должно обладать свойствами симметричности и транзитивности, определим функции symm и trans, обеспечивающие эти свойства.

symm :: ТЕ a b -> ТЕ b а

symm f (Left х) = case f (Right x) of

(y, z) -> (z, y) symm f (Right x) = case f (Left x) of

(y, z) -> (z, y)

trans :: ТЕ a b -> ТЕ b с -> ТЕ а с trans f g (Left x)

(x, snd (g (Left (snd (f (Left x)))))) trans f g (Right x) =

(fst (f (Right (fst (g (Right x))))), x)

Следует заметить, что в определении функции from используется только второй (snd) элемент результирующей пары, а в определении функции to - только правый (fst). Принимая в расчет это замечание, попытаемся использовать для определения нового варианта типа данных ТЕ a b отношение (А | В) => (А | В), являющееся тавтологией. Соответствующий тип данных на языке Haskell будет иметь вид

type ТЕ a b = Either a b -> Either a b

Функции ref 1, symm, trans, from и to в соответствии со сделанным замечанием могут быть реализованы следующим образом:

ref1 :: ТЕ а а

ref1 (Left х) = Right х

ref1 (Right х) = Left х

symm :: ТЕ a b -> ТЕ b а

symm f (Left x) = case f (Right x) of

77

Left у -> Right у symm f (Right x) = case f (Left x) of

Right у -> Left у

trans :: ТЕ a b -> ТЕ b с -> ТЕ а с trans f g (Left x) = case f (Left x) of

Right у -> case g (Left y) of

Right z -> Right z

trans f g (Right x) = case g (Right x) of

Left у -> case f (Right y) of Left z -> Left z

from :: ТЕ a b -> a -> b from f x = case f (Left x) of Right у -> у Left у -> undefined

to : : ТЕ a b -> b -> a to f x = case f (Right x) of Left у -> у Right у -> undefined

Поскольку определяющее отношение для ТЕ a b является тавтологией, то в силу изоморфизма Карри — Ховарда существует функция f типа ТЕ а Ь. Она определяется следующим образом:

f :: ТЕ а Ъ f = id

Существование функции фантомного типа отличает полученный тип данных от типов, рассмотренных ранее. Отметим, что отношения, определяющие сигнатуры функций from и to, не являются тавтологиями. Вследствие этого обстоятельства функции from и to могут принимать значения undefined, однако это не ограничивает область их применения при решении задач, рассмотренных в работе [2].

Отметим, что в соответствии с [1, 2] определение функции f вида f (С pi ... pn) = е при добавлении к конструктору данных С параметра р типа ТЕ а Ь, контролирующего эквивалентность типов а и Ь, заменяется на f (С р pi ... pn) = from р е.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Орел А. А. Фантомные типы данных на основе отношения предпорядка // Математика. Механика : еб. науч. тр. Саратов : изд-во Сарат. ун-та, 2010. Вып. 12. С. 56-59.

2, Hinze R. Fun with phantom types. Cornerstones in Computing/ eds, J, Gibbons, O, de Moor, Palgrave Maemillan, The Fun of Programming, 2003, P. 245—262,

3, Baars A. I., Swierstra S. Typing dynamic typing// Proc of the Seventh ACM SIGPLAN International Conference on Functional Programming (ICFP '02), October 4-6, 2002. ACM Press / Pittsburgh, Pennsylvania, USA, 2002. SIGPLAN Notices 37(9).

УДК 519.25+519.853

П. Ю. Пасеков

ПРИМЕНЕНИЕ ТЕОРИИ МАРКОВИЦА К ПОРТФЕЛЮ МЕХАНИЧЕСКИХ ТОРГОВЫХ СИСТЕМ

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

В 1952 г. Гарри Марковиц опубликовал фундаментальную работу [1], которая считается основой современной теории портфельного инвестирования. По теории Марковица для формирования набора эффективных портфелей необходимо определить ожидаемую доходность, дисперсию для каждого финансового актива и ковариацию между активами. Эффективный портфель - портфель, обеспечивающий самый низкий риск при заданной ожидаемой доходности. Рассмотрим постановку задачи Г. Марковица:

' то то

Е Е üßj Covij ^ min

i=i j=i

то

< E E(ri)9i = E(r)

i=i

то

E 0i = i,

i=i

где - доля г-го актива в портфеле, Covi;j - ковариация ¿-го и j-ro активов, E(r) - ожидаемая доходность портфеля, E(ri) - ожидаемая i

Г. Марковиц ввел понятие «эффективная граница», на которой располагаются все эффективные портфели. Чтобы определить данную границу, необходимо рассчитать соответствующие удельные веса входящих

i Надоели баннеры? Вы всегда можете отключить рекламу.