случай избыточного сопоставления с образцом

В Linux вы можете использовать вызов sink() для /dev/null (или во временный файл в другой ОС, см. ?tempfile):

sink(file="/dev/null")
f()
sink()
0
задан noogler 18 March 2019 в 17:52
поделиться

1 ответ

case val of case1

не делает то, что, по вашему мнению, делает, а именно проверяет, равен ли val case1. Он вводит новую привязку с именем case1, скрывая существующую привязку, значение которой равно val. Вы не получаете сравнения на равенство бесплатно: вы должны запросить их, используя ==, возможно, в предложении guard или в выражении if. Итак, у вас есть два избыточных шаблона: предложение _ никогда не будет введено, потому что шаблон case1 соответствует всем возможным входам.

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

... do
  val <- evaluate var memory
  if val == case1
    then interpret ...
    else interpret ...
0
ответ дан amalloy 18 March 2019 в 17:52
поделиться
Другие вопросы по тегам:

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