Создание Haskell объекта определенного типа (package: newsynth) - PullRequest
1 голос
/ 01 мая 2020

basi c Haskell вопрос здесь. Я пытаюсь использовать newsynth Quantum.Synthesis.EuclideanDomain для запуска евклидова алгоритма, реализованного там как euclid_gcd, в кольце гауссовых целых чисел Z[i]. Вот что я попробовал в GHCi:

Prelude> import Quantum.Synthesis.EuclideanDomain
Prelude Quantum.Synthesis.EuclideanDomain> import Quantum.Synthesis.Ring
Prelude Quantum.Synthesis.EuclideanDomain Quantum.Synthesis.Ring> let p = Cplx 13 0
Prelude Quantum.Synthesis.EuclideanDomain Quantum.Synthesis.Ring> let z = Cplx 5 1
Prelude Quantum.Synthesis.EuclideanDomain Quantum.Synthesis.Ring> euclid_gcd z p

Вывод

<interactive>:12:1: error:
    • Non type-variable argument
        in the constraint: EuclideanDomain (Cplx a)
      (Use FlexibleContexts to permit this)
    • When checking the inferred type
        it :: forall a. (EuclideanDomain (Cplx a), Num a) => Cplx a

, поэтому я попытался Prelude Quantum.Synthesis.EuclideanDomain Quantum.Synthesis.Ring> :set FlexibleContexts, но это вернуло Some flags have not been recognized: FlexibleContexts. Я думаю, что мне нужно как-то создать элементы, специфицирующие c до ZComplex, но я не уверен, как это сделать, кроме сложных чисел с компонентами в Z. Любое руководство о том, как это сделать, очень ценится.

Я также был бы благодарен за руководство, в более общем смысле, как интерпретировать документацию, такую ​​как ссылка, приведенную выше, и как использовать ее для создания экземпляров элементов определенных типов / классов (возможно, я не использовал их слова правильно, извиняюсь если так).

Спасибо!

...