Я для изменения значений {место} и {other_place} в записи op.
#op{
action = [walk, from, {place}, to, {other_place}],
preconds = [[at, {place}, me], [on, floor, me],
[other_place, {place}, {other_place}]],
add_list = [[at, {other_place}, me]],
del_list = [[at, {place}, me]]
}
Но erlang не позволяют изменять переменные. Существует ли тип данных для этого?
erlang не позволяет изменять переменные, это правда. Но ничто не мешает вам делать модифицированные копии переменной.
Учитывая ваши записи:
Rec = #op{
action = [walk, from, {place}, to, {other_place}],
preconds = [[at, {place}, me], [on, floor, me],
[other_place, {place}, {other_place}]],
add_list = [[at, {other_place}, me]],
del_list = [[at, {place}, me]]
}
Вы можете эффективно получить модифицированную версию, например так:
%% replaces the action field in Rec2 but everything else is the same as Rec.
Rec2 = Rec#op{action = [walk, from, {new_place}, to, {new_other_place}]}
Это выполнит то, о чем вы, кажется, просите.