- 1
- 2
- 3
- 4
- 5
- 6
- 7
data Foo a = Foo {a :: a, b :: Int}
| Bar {b :: Int}
foo :: (a -> b) -> Foo a -> Foo b
foo f x@Foo{a = a} = x{a = f a}
foo _ x@Bar{} = x -- error: Couldn't match type ‘a’ with ‘b’
foo _ x@Bar{} = x{} -- error: Empty record update
seo #нытьё #ниасилил
Проверил, работает
[1] http://govnokod.ru/19959#comment326152
Нет, просто длинные ссылки в параграфе мешают читать текст. В маркдауне что-то похожее есть:
Link definitions can be placed anywhere in your Markdown document. I tend to put them immediately after each paragraph in which they’re used, but if you want, you can put them all at the end of your document, sort of like footnotes.
Here’s an example of reference links in action:
I get 10 times more traffic from [Google] [1] than from
[Yahoo] [2] or [MSN] [3].
[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
Но я, скорее всего, из статей неосознанно подцепил.
Иначе я не могу объяснить, зачем человек может настолько выставлять себя в дураках каждый божий день.
Гомосексуализм - не болезнь! Давайте относиться с уважением!
Меня шмонай ты, вертухай,
Да загляни под юбочку,
Да посмотри на булочки.
Понюхай попку носиком,
Прикинься, киса, пёсиком,
Вот в этом вся и разница,
Кто хочет, а кто дразнится.
©Любимая группа мамки админа
я так и делаю обычно, в этом суть. Вставка ссылки это переключение контекста.
It seems the pragma also turns on some other stuff that I don't want, but if I put this just in the module that defines the transformation functions, it should be safe…
Конечно, спорить с тем, что records — говно, я не буду.
На месте Foo может быть и [].
Та же питушня:
Если бы! Ирония в том, что в ванильном Haskell2010 можно добавить _одно_ поле из 10 в record update syntax, и компилятор догадается, чего от него ждут. Но вот логичная попытка заапдейтить 0 полей вызывает ошибку.
Надо было в сам говнокод это добавить.
ЧЯДНТ?
Ошибка, но
Работает. Вывод типов, похоже спотыкается на полях, пошаренных между конструкторами.