Mini-Kanren реализован для Scala . Я не .NET-программист и не могу сказать, насколько это полезно для вас, но Mini-Kanren соответствует вашим требованиям с точки зрения языка программных логических переменных: если встраивание Scala в .NET имеет свойства, совместимые с тем, что вы после, значит, вы должны быть там.
В PHP невозможно создать цепочку таких выражений, поэтому необходимо сохранить результат array _ test ()
в переменной.
Попробуйте:
function array_test() {
return array(0, 1, 2);
}
$array = array_test();
echo $array[0];
-121--1289832- Вы почти там. Предположим, что у вас есть кадр данных dt
со значениями x, y и pij, просто возьмите образцы строк!
dt <- expand.grid(X=1:3, Y=1:2)
dt$p <- runif(6)
dt$p <- dt$p / sum(dt$p) # get fake probabilities
idx <- sample(1:nrow(dt), size=8, replace=TRUE, prob=dt$p)
sampled.x <- dt$X[idx]
sampled.y <- dt$Y[idx]
-121--3879658- Я не знаю библиотеку, которая делает то, что вы хотите. Однако у меня есть реализация «union-find in F #» в этой записи блога . И из моих студенческих дней, я, кажется, помню какую-то популярную книгу о Схеме имел базовый алгоритм унификации в ней, который я использовал, чтобы кодировать «мини-пролог» реализации в тот день. Так что я чувствую, что это то, что кто-то с нужным опытом может собрать в выходные, если кто-то ищет проект. (Возможно, я добавлю его в свой список TODO на выходные.)
У меня есть базовое встраивание логического программирования на F #. Я разработал его для курса, который я преподаю "Парадигмы программирования", который использует F # повсюду и включает пару лекций по логическому программированию.
В коде используются императивные обновления для отражения замен, вызванных унификацией, и используются успешные продолжения. Таким образом, он относительно отличается от, например, Канрен.
Я не уверен, насколько заметны сами по себе записи, но вы можете найти это вложение в конце: http://undergraduate.csse.uwa.edu.au/units/CITS3242/16-logic-prog.pdf
Я могу предоставить улучшенную версию этого вложения по запросу.