PLTools / Lama

Teaching language LaMa for a compiler course
GNU General Public License v3.0
67 stars 28 forks source link

Странное поведение с S-выражениями #19

Closed kirindenle closed 3 years ago

kirindenle commented 3 years ago

Матчится то, что не должно матчиться, имя S-выражения не совпадает, но паттерн матчится. Причём будет ли такой баг зависит от имени S-выражения.

Программа:

fun weirdCase (s) {
  case s of
      Binop (x) -> printf("weird 0\n")
    | _ -> printf("weird 1\n")
  esac
}

fun weirdCase2 (s) {
  case s of
      Abc (x) -> printf("weird 0\n")
    | _ -> printf("weird 1\n")
  esac
}

weirdCase(Binoprrr (100500));
weirdCase2(Abcrrr (100500))

Вывод:

weird 0
weird 1
dboulytchev commented 3 years ago

Not a bug; an implementation limitation. Added a section into the spec in 8bdd666ea829835c59f8a83b3660a3c4202f7d10.