У меня возникли проблемы с определением функции в Frege, которая использует несколько шаблонов. По сути, я определяю сопоставление, перебирая список кортежей. Я упростил его до следующего:
foo :: a -> [(a, b)] -> b
foo _ [] = [] --nothing found
foo bar (baz, zab):foobar
| bar == baz = zab
| otherwise = foo bar foobar
Я получаю следующую ошибку:
E morse.fr:3: redefinition of `foo` introduced line 2
Я видел и другие примеры, такие как этот которые используют несколько шаблонов в определении функции, поэтому я не знаю, что я делаю неправильно. Почему я получаю здесь ошибку? Я новичок в Frege (и новичок в Haskell), поэтому может быть что-то простое, что я упускаю, но я действительно не думаю, что это должно быть проблемой.
Я компилирую с версией 3.24-7.100.
(baz, zab):foobar
. Что-то вродеfoo bar ((baz, zab):foobar)
- person Alec   schedule 11.02.2017