В этой статье я вкратце описываю свой опыт оптимизации одной задачи перебора, начиная от однопроцессорного алгоритма к многопроцессорному и к версии на OpenCL.


User
Данный текст является переводом документации Template Haskell, написанной Булатом Зиганшиным. Перевод всего текста разбит на несколько логических частей для облегчения восприятия. Далее курсив в тексте — примечания переводчика.
yell file line = fail ($(printf "Error in file %s line %d") file line)
yell file line = fail ((\x1 x2 -> "Error in file "++x1++" line "++show x2) file line)
data T = A Int String | B Integer | C
$(deriveShow ''T)
data T = A Int String | B Integer | C
instance Show T
show (A x1 x2) = "A "++show x1++" "++show x2
show (B x1) = "B "++show x1
show C = "C"