coq-breakpoints
Mar. 20th, 2013 07:22 pmЗарелизил мелкую библиотечку для отладки редукций выражений в пределах coq: https://bitbucket.org/gds/coq-breakpoints
$ ./main.byte (lcm 6 36/5) = 36
# do_with_foldl fold_left; res=>abc - : unit = () # do_with_foldl (r2l fold_right); res=>cba - : unit = () #
for (my $i ...), хоть и обходы есть,option 'a он, ясное дело, парсить и не должен, но 1. он не любит типовые параметры даже в случаях фантомных типов и в случае известных типовых параметров, 2. не умеет генерить json по известному параметризованному типу. Пичалька, но попробуем функторы тут. Но, думается, изначально надо было бы делать (не мне, понятно) что-то типа atdgen, но по технологии deriving'а. С другой стороны, atdgen у меня в планах точно, но попозже.(9:16:26) Ivanych: Мне очень так видится, что можно сделать backend для базок данных.
И одновременно, язычок-backend.
(9:22:18) gdsfh: про backend -- не знаю, просто данные сложить можно, и даже не ёбаный пиздец [в плане сложности реализации], но 1. дубовая структура "таблицы->строки->столбцы" -- фи. 2. транзакции делать -- гемор адский.
(9:22:48) Ivanych: Естественно, что этот быкенд должен поддерживать не только таблички.
(9:29:29) Ivanych: Конечно не такая дубовая структура!
Надо сделать, чтобы в каждом row могли быть разные типы!
(9:29:58) gdsfh1: лололо
(9:30:13) Ivanych: И разное их количество и типы разные, да!
(9:31:28) gdsfh1: беспорядочно содомирующие друг друга!
(9:31:39) Ivanych: ;-) ;-) Exactly!
[("a", String "str"); ("b", Int 123); ("c", Bool True)]), кодvalue () = run & (fun f -> f <$> string "a" <*> int "b" <*> bool "c") (Printf.printf "a=%S b=%i c=%b") ;
a="str" b=123 c=true
sql_t = [ `Null | `String of string | `Binary of string | ... ].value read : (stringscount:int -> list (iteratee char 'a)) -> iteratee char (list 'a)value read : (stringscount:int -> 'a -> iteratee char 'a) -> 'a -> iteratee char 'a(it1 >>= fun v1 -> it2 >>= fun v2 -> return v1 + v2), но фишка в том, что it1 и it2 должны не трогать поток за пределами того, что им выделено, то есть, если в терминах итератов, должно было бы быть что-то типа ((join & take len1 it1) >>= fun v1 -> (join & take len2 it2) >>= fun v2 -> return v1 + v2), и не представляю, как это сделать.value read : (ntotal -> npart -> nbytes -> iteratee char 'i)
-> iteratee 'i 'a
-> iteratee char 'a