Отслеживание в обратном порядке в Erlang

count(*) количества АННУЛИРУЮТ, и count(column) не делает

[редактирование], добавил этот код так, чтобы люди могли выполнить его

create table #bla(id int,id2 int)
insert #bla values(null,null)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,null)

select count(*),count(id),count(id2)
from #bla

результаты 7 3 2

5
задан nbitd 4 December 2009 в 19:43
поделиться

2 ответа

Re: Мои функции bactracking.

Это общие функции, которые обеспечивают основу для обработки обратного отслеживания и логических переменных, подобных пролог движок. Вы должны предоставить функцию (предикаты), описывающую логику программы. Если вы напишете их, как в прологе, я могу показать вам, как перевести их на Erlang. Очень кратко вы переводите что-то вроде:

p :- q, r, s.

в прологе во что-то вроде

p(Next0) ->
    Next1 = fun () -> s(Next0) end,
    Next2 = fun () -> r(Next1) end,
    q(Next2).

Здесь я игнорирую все другие аргументы, кроме продолжений.

Надеюсь, это поможет. Как я уже сказал, если вы опишете свои алгоритмы, я могу помочь вам их перевести, Я искал хороший пример. Вы, конечно, можете сделать это и сами, но это немного поможет.

4
ответ дан 14 December 2019 в 13:38
поделиться
2
ответ дан 14 December 2019 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: