Конструктор типа Haskell в универсальной функции - PullRequest
0 голосов
/ 05 мая 2019

Я копаюсь в системе Haskell Lava HDL и застрял в понимании http://hackage.haskell.org/package/chalmers-lava2000-1.6.1/docs/src/Lava-Vhdl.html#writeVhdl

Может кто-нибудь сказать мне, к какой функции (var "inp") в writeVhdl разрешается?

Функция var еще не определена и, похоже, генерируется с помощью некоторого метапрограммирования , которое мне не знакомо в class Constructive в http://hackage.haskell.org/package/chalmers-lava2000-1.6.1/docs/src/Lava-Generic.html#line-253.

Функция var, похоже, действует как конструктор .Как работает этот механизм?

Вход для writeVhdl представляет собой описание схемы, подобное

halfAdd (a, b) = (sum, arry)
  where
    sum = xor2 (a, b)
    arry = and2 (a, b)

1 Ответ

2 голосов
/ 05 мая 2019

Может кто-нибудь сказать мне, к какой функции (var "inp") в writeVhdlresolves относится?

Это зависит от того, что вы передаете writeVhdl 2-й аргумент, а именно circ. Тип его аргумента (если я правильно прочитал) - это именно тот тип, который возвращается var "foo".

Вы можете наблюдать типы выражений в ghci, набрав :t some expression. Попробуйте загрузить свой код в сеанс GHCi и поиграть с командой :t.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...