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.

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

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

Архив записей в блогах:
1. У метро "Приморская" в Василеостровском районе не мешало бы привести в порядок вот все это торговое нагромождение в стиле начала нулевых. А еще лучше снести нахрен и построить один ТРЦ. Берега Смоленки тоже нуждаются в благоустройстве. 2. 3. 4. 5. Смоленка. 6. ...
Надеюсь, что многим из вас эта информация пригодится, иначе бы не стала вас грузить. Знаю не понаслышке, как сложно найти хорошие курсы английского языка, вернее, не курсы даже, а проверенную методику, с помощью которой язык этот практически в мгновение ока перестанет быть похожим на ...
В Кремле не увидели ничего «из ряда вон выходящего» в рассуждениях главы Чечни Рамзана Кадырова в ходе интервью американскому телеканалу HBO. Об этом сообщает РИА Новости со ссылкой на пресс-секретаря президента России Дмитрия Пескова. «Что касается интервью Кадырова, то, честно ...
На недавно прошедшем аукционе Stack's Bowers было продано 2471 лотов, вот самые интересные из них. Россия. Медная полтина (1/2 рубля) проба, 1842 г. Варшавский монетный двор. Николай I. Бит-1267 (R2). Интересный тип, отчеканенный в Варшаве как пробная чеканка номиналом 1/2 рубля. ...
Электронная книга с такими рецептами продается в самых популярных интернет-магазинах. В ней вообще много ...