Существует много хранилищ данных, записанных в Erlang, например, Riak, Dynomite, CouchDb, Scalaris, я скучал по кому-либо?
Я знаю, что Java и C/C++ также использовались для записи хранилищ данных (Cassandra, Гипертаблица, и т.д.), но какие-либо Хранилища данных были записаны на каких-либо других функциональных языках, таких как F#, Scala, Haskell, Clojure, и т.д.? Причина я спрашиваю это (и многие другое функциональное программирование и вопросы о типе Erlang) состоит в том, чтобы оценить выполнимость языков функционального программирования для проектов реального мира.
Как примечание стороны было указано мне, что я означаю язык фактической реализации самого хранилища данных а не клиентский язык получать доступ к хранилищу данных (т.е.: через ODBC).
Изменения параметра значения не видны вызывающему абоненту (также называемому «pass by value»).
Изменения ссылочного параметра видны вызывающему абоненту («pass by reference»).
Пример C++:
void by_value(int n) { n = 42; }
void by_ref(int& n) { n = 42; }
void also_value(int const& n); // Even though a reference is used, this is
// semantically a value parameter---though there are implementation
// artifacts, like not being able to write "n = 42" (it's const) and object
// identity (&n here has different ramifications than for by_value above).
Одним из способов использования указателей является реализация «справочных» параметров без использования специальной ссылочной концепции, которой некоторые языки, например C, не имеют. (Конечно, вы также можете рассматривать указатели как сами значения.)
-121--4551149-Sans-jQuery solution:
function makeNewElementFromElement( tag, elem ) {
var newElem = document.createElement(tag),
i, prop,
attr = elem.attributes,
attrLen = attr.length;
// Copy children
elem = elem.cloneNode(true);
while (elem.firstChild) {
newElem.appendChild(elem.firstChild);
}
// Copy DOM properties
for (i in elem) {
try {
prop = elem[i];
if (prop && i !== 'outerHTML' && (typeof prop === 'string' || typeof prop === 'number')) {
newElem[i] = elem[i];
}
} catch(e) { /* some props throw getter errors */ }
}
// Copy attributes
for (i = 0; i < attrLen; i++) {
newElem.setAttribute(attr[i].nodeName, attr[i].nodeValue);
}
// Copy inline CSS
newElem.style.cssText = elem.style.cssText;
return newElem;
}
Например
makeNewElementFromElement('a', someDivElement); // Create anchor from div
-121--3181268- FleetDB является базой данных без схемы в Clojure.
Ваш вопрос меня немного озадачивает. Вы спрашиваете о хранилищах данных, написанных на различных языках. Обычно, когда я программирую, я ищу библиотеку или API для получения и передачи данных в хранилище данных на выбранном мной языке. В чем написано базовое хранилище данных (если оно написано на чем-нибудь, некоторые хранилища данных - не более чем макеты файлов), мне все равно.
И на этой основе небольшой поиск в Google приведет к появлению библиотек Haskell-to-ODBC, и я полагаю, что другие языки будут иметь аналогичные возможности. Я ничего не знаю об этом, поэтому не буду комментировать их пригодность для проектов.
В каком-то смысле вы уже ответили на свой вопрос. Системы, которые вы упомянули, и другие из комментариев, ЯВЛЯЮТСЯ , написанными на функциональных языках, и ЯВЛЯЮТСЯ определенно проектами из реального мира, поэтому ответ - да .