HN user

koomi

38 karma
Posts0
Comments14
View on HN
No posts found.

Agreed. I don't grasp how, in response to a text lamenting a lack of psychological safety and fear of being shamed into silence, a response which essentially states "what you said was stupid, you should never have talked about it and this will have negative consequences for your career" can be considered appropriate, let alone as having a positive impact in any meaningful way.

IPv6 Adoption 9 years ago

DS-Lite[0] means you have proper native IPv6 but only a tunnel on top of that for v4, so it's unlikely that IPv6 connections are negatively affected by this setup.

[0] https://tools.ietf.org/html/rfc6333

Edit: On the other hand, if connections via IPv4 were spotty I would not hesitate to suggest problems with NAT or path MTU.

There is quite a bit of research that implies that the most influential action you can take to make a software team more productive in terms of both quality and quantity is to build a culture that is a close sibling to what he describes.

Can you give us some pointers to said research? I'd love to see the details.

Aeson's «fromJSON» returns a «Result» which is basically «Either String». Most other functions operate on «Parser», which also includes an error message if things go wrong.

The only functions returning «Maybe» are «decode» and friends, and those have «Either String» variants.

You can use «modifyFailure» and «typeMismatch» (and the «with» wrappers) to get more descriptive messages, without a bit of help they are quite useless.

I just started university and it's still all Java. I found out one university in my country (Germany) teaches Scheme in their introductory course, but sadly I had already enrolled at a different one at that time.

The high school CS curriculum here is also basically an introduction to Java.

Rust 0.7 Released 13 years ago

There is no general zip for every Traversable, though there is one for every Applicative with a suitable instance (like the ZipList wrapper for lists): liftA2 (,)

The reason is that you need to operate on multiple containers at once and that is what Applicative's (<*>) provides, while Traversable only requires Functor and can therefore only traverse one container at a time.

So what Haskell has is just internal iteration, but we have another interface for internal iteration on multiple containers that allows zip to be implemented easily.

Regarding 4, the split package[1] is the widely accepted standard for splitting lists in various ways and you will likely already have it installed since quite a few packages (142 to be exact) depend on it.

Regarding 5, I have never heard of LazyLists, nor can I find them on Hackage, nor does that name make any sense since normal (:,[]) lists are already as lazy as it gets. (Lazy) ByteStrings are, as the name indicates, more for raw binary data, but can also be used for text . The modern standard for strings is Text[2]. The OverloadedStrings extension makes it considerably easier to work with literals of the differnt string-like types.

Regarding 6, I find documentation in Hackage packages quite good. Your example, Foldable, not only has a decent explanation of each function in the typeclass definition, but there are also good tutorials (e.g. Typeclassopedia[3]) since it is definitely a non-trivial typeclass.

[1] http://hackage.haskell.org/package/split [2] http://hackage.haskell.org/package/text [3] http://www.haskell.org/haskellwiki/Typeclassopedia#Foldable