KVS deps

топ 100 блогов maxim28.03.2016 Грепнул по коду какие функции mnesia используются в KVS. Эти функции плотнячном покрывают триста строк кода.

-module('Mnesia').

start() -> ok.
stop() -> ok.
delete_table(T) -> ok.
delete_schema(T) -> ok.
system_info(T) -> ok.
change_table_copy_type(_,_,_) -> ok.
change_config(_,_) -> ok.
add_table_copy(_,_,_) -> ok.
add_table_index(_,_) -> ok.
table_info(_,_) -> ok.
system_info(_) -> ok.
create_schema(_) -> ok.
create_table(_) -> ok.
wait_for_tables(_,_) -> ok.
write(_,_) -> ok.
read(_) -> ok.
read(_,_) -> ok.
index_read(_,_,_) -> ok.
all_keys(_) -> ok.
activity(_,_) -> ok.
dirty_update_counter(_,_) -> ok.


И фиг что выбросишь, надо сделать сначала аннотации в AST, а потом кеширование на этих аннотациях, а потом ввести remote выражения которые подключаются сразу закешированными и не чекаются, а потом написать индуктивные биндинги для параметров и возвратов этого интерфейса, а потом написать минимальное приложение на ОМ (еще нет EXE, это паралельный процесс), которое проверит, что мнезия вызывается и возвращает то что нужно.

Это самая грязная и нечистая часть. Индуктивные биндинги в виде термов которые не чекаются. Каждый такой тип — суть эффект. Я вообще хотел отказаться от этой идеи но такая технология нужна как минимум для Nat и List, чтобы мапить это в integer и list эрланговые. Шовная линковка я это называю.

Вариант бесшовной линковки я описывал несколько постами ранее в посте про свободную монаду IO. Можно моделировать эффекты мнезии, добавив это в IO и передавая все функции mnesia в IO. В случае mnesia такое тоже можно рассматривать как вариант. Но в случае Nat и List согласитесь было бы глупо эти типы и еще 2 десятка эрланговых функций заворачивать как мегаблоб фукнций которые нужно передать как параметр в монаду IO.

IO должна сохранится простая, чтобы десятикласники ее поняли. Моей дочери придется выслушать про своодную монаду IO и косвободную комонаду IOI (моделирующую чистейший gen_server).

Вообщем если с Nat, List и еще несколькими ключевыми модулями, которые нет смысла на IO переписывать, — все понятно, то какой выбор сделать для индуктивной обертки вокруг Mnesia пока неясен. Понятно что в IO запихивать мнезию мы не будем, но Эффекты в стиле Idris — с глобальной и единственной свободной монадой вполне бы подошли для Mnesia.

Сигнатура программы работающей с mnesia выглядела бы как

Effect [IO,Mnesia]


Где экшин хендлеры эффектов выстраиваются в список монады Eff. Кто видел Idris тот в курсе, что другого пока лучше не придумали. Вообщем-то это все у нас тоже будет только в EXE, в OM у нас будет только IO и IOI для десятикласников.

С другой стороны если мы сделаем Mnesia сразу в виде шовных биндинг хаков, то мы сможем показывать примеры OM с работающей mnesia, зато типы формально сходится не будут будут "нечесными". Ну это такое, думаю можете это пережить. Мы и так поднялись на недосягаемую высоту строжайшей и чеснейшей чистоты, которая только возможна на виртуальной машине Erlang.

Теперь-то мне стало ясно как заблуждались архитекторы многих языков и базовых библиотек. Сегодня без хейтспичей, так что извините.

Оставить комментарий

Архив записей в блогах:
Вниманию любителей Транссиба: в Могоче сегодня открыли новый вокзал очень "туркостроевского" стиля. Видимо, теперь он самый модный на сети. Старый вокзал брутально-угловатого брежневского кроя ушёл в историю (который "почта. туалет. телеграф"), равно как и памятник ВОВ справа от него ...
Calpton – управляющая компания, которая осуществляет полный спектр услуг по аренде помещений в торговых центрах . В сфере деятельности компании торговые площади и офисные центры. Calpton гарантирует индивидуальный подход для каждого случая. Для всех объектов разрабатывается своя ...
Душою стал сильней, хотя и телом слаб, То нынче полюбя, что прежде было скрыто. Тебе я впредь не раб, бог похоти Приап, Далёк я от тебя, богиня Афродита. В пуховиках травы, под зарослями роз, Мне не ласкать колен и ароматных губок. Прощай навек, увы, бог юности Эрос, Налей мне, бог ...
Сегодня, 5 марта годовщина смерти ...
Кому не знакомы слова: «ава», «авка», «аватарка», «аватар»? Здесь в Жж их кличут «юзерпиками» . Но как это не назови – суть не меняется. Все сразу представляют небольшую картинку, которая размещается в социальных сетях, форумах, блогах, мессенджерах и т.д. Мы решили покопаться в ...