2,853 karma · joined January 10, 2011
https://github.com/emillon/
http://blog.emillon.org/
@etiennemillon
me @ <username> . org- correction: define a loop invariant. Assuming the loop terminates, it will hold when the program exits the loop.
- termination: define a loop variant, something that changes at every iteration. If you can find a variant that is a strictly decreasing sequence of natural numbers (or an increasing, bounded sequence), you've established that the loop terminates.
Once you've done these two steps you know that the program terminates and the invariant holds at the end. (in your case, you won't be able to find a good variant - depending on the floating point semantics you use of course).
This kind of statement must take 10-15 bytes max to patch and the build boxes are typically less safe than source control systems.
For some reason mailchimp was returning 403s from heroku, this must be related to this morning's outage. This is fixed and I added the emails that failed.
I totally agree, that was awesome to discover random websites. I think that there's still a place for webrings these days, so I'm creating the webring club. Feel free to subscribe on http://webring.club/ or shoot me an email (address in profile) if you're interested in exchanging ideas!
But actually I don't think that this duality is related to types: in a static language, the types of captured variables does not appear in a value's type. And for the object side, the type of instance variables is hidden behind the public interface too.
So it's really more about techniques for creating abstractions than how the values are composed together.
There's a functional update construct for objects:
http://caml.inria.fr/pub/docs/manual-ocaml/objectexamples.ht...
It works like { r with field = value }.
In some cases you can also use "private ADTs". Modules seeing such a type can use pattern matching on them but can not apply the constructors.
Remote: Possible
Willing to relocate: Not immediately but we can discuss it.
Technologies: OCaml, Haskell, Python, C
Resume: http://www-apr.lip6.fr/~millon/cv-emillon.pdf
Github: https://github.com/emillon
Blog: http://blog.emillon.org/
Email: me AT emillon DOT org
My background is in security & formal methods. In my PhD thesis I wrote a type inference system to detect security bugs in the Linux kernel. I'm passionate about open source and contribute quite a lot to Debian.
Happy to chat with you about cool opportunities!
I'd say that the truncation algorithm operates on bytes and that it can't make sense of d8 35, but I'm not too sure how to fix that since graphemes can have arbitrary length (right?). Do you have to compute the width in advance?
I presume that this is against github's TOS.