Конструктор типа Haskell в универсальной функции
Я копаюсь в системе Haskell Lava HDL и застрял в понимании http://hackage.haskell.org/package/chalmers-lava2000-1.6.1/docs/src/Lava-Vhdl.html
Может кто-нибудь сказать мне, что функция (var "inp")
в writeVhdl
разрешается?
функция var
еще не определен и, кажется, генерируется с помощью некоторого метапрограммирования, которое мне не знакомо в class Constructive
в http://hackage.haskell.org/package/chalmers-lava2000-1.6.1/docs/src/Lava-Generic.html.
функция var
кажется, действует как конструктор. Как работает этот механизм?
Вход в writeVhdl
это описание схемы как
halfAdd (a, b) = (sum, arry)
where
sum = xor2 (a, b)
arry = and2 (a, b)
1 ответ
Может кто-нибудь сказать мне, что функция (var "inp") в writeVhdlresolves к?
Это зависит от того, что вы передаете writeVhdl
2-й аргумент, а именно circ
, Тип его аргумента (если я правильно прочитал) - это именно тот тип, который возвращается var "foo"
,
Вы можете наблюдать типы выражений в ghci
набрав :t some expression
, Попробуйте загрузить свой код в сеанс GHCi и поиграть с :t
команда.