Jul. 7th, 2012

madf: (Default)
На роботі дістали проблеми з валідацією вхідних даних. Мало того що код що займається валідацією застарів ще у 1998-му, так він ще і не завжди працює. Скажімо, для GUI працює, а для batch - ні. Ну і там все в стилі ранніх C - дикі пляски з void* і ручна типізація.
Я колись займався сайтами, і був у мене сайтовий рушій. Рушій не мій, його свого часу написав один класний чувак. І найбільше мені там подобалось те як влаштована валідація і препроцесинг вхідних даних форм.
Коли я робив систему моніторингу для атомщиків, я спробував втілити ідеї із того сайтового рушія у C++. Вийшло не дуже.
А тут я взявся за справу серйозно, і от що отримав:
Обережно, мозковинос! )
Приклади використання у main(). Початкова реалізація вимагала явного використання compose. Потім я додав overloaded operator <<, але ця реалізація вимагала ручного приведення типів (див. makeFunction). А потім я додав id() і все стало на свої місця!
Звісно, це тільки proof-of-concept. Зацініть монадичну композицію і identity function!
І да, CanFail<T> можна замінити на exception і використовувати звичайну композицію: "Expressive C++: Fun With Function Composition", "Function composition".

Profile

madf: (Default)
madf

April 2018

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 10th, 2026 02:35 pm
Powered by Dreamwidth Studios