Я пытаюсь написать контролер анаграммы в Elixir. Он занимает 2 слова, первый из них является ссылкой, второй должен быть проверен как возможная анаграмма первого.
Я пытаюсь записать его с помощью рекурсии и сопоставления с образцом. Я получаю ошибку об использовании оператора in
в предложении охраны:
(ArgumentError) неверные аргументы для оператора in, он ожидает компиляции список времени или диапазон с правой стороны при использовании в защитных выражениях
Я не знаю, что делать, чтобы исправить это. Вот код (ошибка в четвертом определении):
defmodule MyAnagram do
def anagram?([], []), do: true
def anagram?([], word) do
IO.puts 'Not an anagram, the reference word does not contain enough letters'
false
end
def anagram?(reference, []) do
IO.puts 'Not an anagram, some letters remain in the reference word'
false
end
def anagram?(reference, [head | tail]) when head in reference do
anagram?(reference - head, tail)
end
def anagram?(_, [head | _]) do
IO.puts 'Not an anagram, #{head} is not in the reference word.'
false
end
end