Блок, который вы передаете halogenRunAff
, является блоком Aff
, поэтому каждая строка в нем должна быть Aff
. Но liftEff
возвращает Eff
вместо этого. Так что есть несоответствие.
Это то, что говорит вам компилятор: «не может сравниться с Eff с Aff».
Чтобы исправить это, замените liftEff
на liftAff
:
documenttarget <- liftAff $ window >>= document <#> DHT.htmlDocumentToEventTarget
Использовать Сканирование строки #
:
>> 'abcdefghijklmnopqrstuvwxyz'.scan(/.{4}/)
=> ["abcd", "efgh", "ijkl", "mnop", "qrst", "uvwx"]
>> 'abcdefghijklmnopqrstuvwxyz'.scan(/.{1,4}/)
=> ["abcd", "efgh", "ijkl", "mnop", "qrst", "uvwx", "yz"]
>> 'abcdefghijklmnopqrstuvwxyz'.scan(/.{1,3}/)
=> ["abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz"]
test.split(/(...)/).reject {|v| v.empty?}
Отклонение необходимо, поскольку в противном случае оно содержит пробел между наборами. Мой regex-fu не совсем понимает, как исправить это прямо на моей голове.
Есть ли у вас какие-то другие ограничения? В противном случае я бы ужасно соблазнился сделать что-то простое, например
[0..10].each {
str[(i*w),w]
}