У меня есть функция York Lava, которую я хочу переписать в Kansas Lava. Но он не хочет работать, и я не знаю, должен ли я это делать на самом деле. Может кто-нибудь помочь мне с этим, пожалуйста?
{-Serial In - Parallel Out shiftregister. The serial bit is inserted at
the least significant bit position. The data is shifted LSB -> MSB
each and every clock cycle-}
sipo :: Int -- ^ The number of bits in the output word.
-> Bit -- ^ The input bit.
-> [Bit] -- ^ The output word.
sipo 1 inp = [inp]
sipo n inp = inp : rest
where
inp' = delay low inp
rest = sipo (n-1) inp'
Эта выше функция дает мне эти правильные результаты для некоторых примеров:
n = 3
inp = high
out = [high, low, low]
n= 5
inp = high
out = [high, low, low, low, low]
Теперь я попытался написать это в Kansas Lava, это функция задержки, но я получаю странные результаты. Этот код ниже генерирует меня с теми же параметрами, что и в первом примере:
n = 3
inp = high
out = [high?, high., high!] (don't know what that means)
sipo :: (Clock clk)
=> Int -- ^ The number of bits in the output word.
-> Signal clk Bool -- ^ The input bit.
-> [Signal clk Bool] -- ^ The output word.
sipo 1 inp = [inp]
sipo n inp = inp : rest
where
inp' = delay inp
rest = sipo (n-1) inp'
i
наCLK
приведет кCouldn't match expected type '[Signal i0 Bool]' with actual type 'Signal clk0 a0'.
(2) Какой тип выведет GHC(i) дляsipo
, если вы на мгновение удалите подпись? - person duplode   schedule 09.05.2014