Keigo Imai
Keigo Imai
Thank you for your effort and immediate replies. Now I (partially) understood the problem. I thought that overapplication to a setter should be treated as a type error. But it...
Oh, I didn't know that JavaScript bit operations work in that way! Yes I think that is right. And sorry, for min_float I was wrong, it have the correct value!...
It is also nice to allow as-pattern for non-linear subpattern ```ocaml match%lin exp with | C(V(x,y) as z, #s) -> ... ```
it is much better to first gather the linear variable names in subexpr then generate the context automatically?
```ocaml val map: ('a data lin, 'b data lin, 'pre, 'post) slot -> ('a -> 'b * c) -> ('pre, 'post, 'c) monad ``` would work?
This suffices for multiparty.ml but doesn't work for linlist.ml case (slot content has both Data and Lin). match%lin doesn't work neither since: ```ocaml match%lin (expr1: (?,?,'a linlist_ lin) lin_match) with...
Assume %linget and %linmap: ```ocaml let rec map f s = match%linget s with | x::#s -> map f s >> [%linmap f x:: !!s] | [] -> return ()...
Also, we must check for linear occurrences of lens for %linget and %linmap. Names are also confusing. There already is %lin and %linval (and functions lin and lin_). ```ocaml let%linget...
Writers of rev_map would suffer from obfuscation at [] case: ```ocaml let rev_map f s = let rec loop () = match%linget s with | Cons(x,#s) -> [%linmap Cons(f x,#t)]...
Thank you so much for information. I'll take a look.