Итак, на ваш другой вопрос , я думаю, вы можете проанализировать эти строки с помощью split_string/4
, ваша проблема в том, что в результате получаются не атомы, а затем вам нужно правильно построить структуру. Я думаю, что это кусок, который вам не хватает:
?- split_string("this,that,the,other,thing", ",", " ", X),
maplist(atom_string, [Condition,Sym1,Sym2,Sym3,Sym4], X),
Result = illness(Condition, symptoms(Sym1,Sym2,Sym3,Sym4)).
X = ["this", "that", "the", "other", "thing"],
Condition = this,
Sym1 = that,
Sym2 = the,
Sym3 = other,
Sym4 = thing,
Result = illness(this, symptoms(that, the, other, thing)).
Если вы просто asserta(Result)
добавили правильную информацию в базу данных.
Если у вас есть переменное количество симптомов, вы должны вместо этого сохранить его в списке, и это значительно упростит вашу обработку (и, вероятно, наш последующий код, поскольку выполнение чего-либо четыре раза подряд немного повторяется):
?- split_string("this,that,the,other,thing", ",", " ", X),
maplist(atom_string, [Condition|Symptoms], X),
Result = illness(Condition, symptoms(Symptoms)).
X = ["this", "that", "the", "other", "thing"],
Condition = this,
Symptoms = [that, the, other, thing],
Result = illness(this, symptoms([that, the, other, thing])).