In addition to the lexical change, the result now returns a Maybe instead of the actual element. This was done to avoid runtime crashes when head encounters an empty list. However, this means that everytime you have to use head, you will have to pattern match on Just x/Nothing to consume it. However, you can still use the (x::xs) pattern matching syntax to obtain head and tail and pattern match on  for empty lists.
Absence of applicatives or monads mean that you have to explicitly pattern match on Just/Nothing everytime. There is a proposal to add `?` as an operator to obtain the head of the list without the Maybe and provide a default value if it is Nothing. Also there is another proposal to allow `unsafe` for the program to crash if the result is Nothing.
> Absence of applicatives or monads mean that you have to explicitly pattern match on Just/Nothing everytime.
It seems to me that most real uses can probably be solved by map, and withDefault if you really need to get out of the Maybe monad for some reason (though map should make it so that you don't have to for most things.)
> There is a proposal to add `?` as an operator to obtain the head of the list without the Maybe and provide a default value if it is Nothing.
Since elm supports user-defined operators, can't you just do that yourself. Something like:
That is true. Coming from Ruby world, you find that Java and the Clojure world have a lot of rough edges. But Clojure makes things as easy as possible. For example, reading from a file or a URL is still (slurp "https://"). It works fine on a stock OSX, Java 8 sdk and the latest clojure. Don't let such minor inconveniences discourage you from exploring Clojure/ClojureScript. The language is fascinating. I feel that learning and practicing clojure has made me a better developer.
I also found http://blockcypher.com to be quite nice. In addition to the blockchain API, they also have APIs for creating transactions and even provide web sockets and web hooks. They do not host the wallet so you do not have to share your private key with them. They will create a transaction for you and you can then sign it with your private key. This is a good gateway for developers into the bitcoin system. The alternative is running bitcoind to download the 17 gig blockchain and then start coding. This provides instant gratification for developers to get started.
I am an Indian here. I have heard horror tales from TCS employees on how they are given "on-site" experience. Mostly it is a portrayed as a favor done by the management to the employee. You have to earn the on-site opportunity which involves a great deal of kissing people's rears. It is mostly not about the talent you have. One of the guys who had gone on-site on one such occasion had told me how the organization billed him as an Expert Oracle consultant while he was told to study oracle while he was boarding the flight. It is true that they get paid a pittance when compared to US nationals. A developer with 5 years of experience makes about $2.5k a month. They usually subsist on Taco Bells, McD burgers and so on. On the other hand many indians prefer this, as it still works out better than if they had stuck to the indian job. In fact, in many family circles you are not considered a human if you are working in IT and do not have any "on-site experience". Most these folks are completely dependent on the organization that they work for and are willing to fight for it tooth and nail to defend it even if the organization is holding them under a sort of an indentured servitude. There are a few genuinely smart hackers but those are far and few in between. Most of these organizations are as dysfunctional as the companies that they consult for.
In fact, in many family circles you are not considered a human if you are working in IT and do not have any "on-site experience"
I'm probably too independently minded, but I'm not sure I could be bothered to give a rat's ass about what my family thought of me with respect to my job or how I live my life. If I'm working, keeping a roof over my family's head, enjoying what I do and getting better in my profession... tough cheese if someone in my family doesn't 'consider me human' - that says far more about them than me.
I have worked for a tata company in the past. I guarantee that this is not my experience. Of course, there are bad people in every organization, including american companies, but you cannot generalize all tata employees are bad.
Sometimes you want to do things just for the sake of doing it without thinking about its use/utility. There is nothing wrong with that. Not everything you do needs to have a purpose but that may/may not lead to great things with purpose later. Richard Feynman was famous for working on the physics of wobbling discs that led him to a nobel prize later.
But we need to simplify things. As an Indian business serving Indian customers I can tell you that the whole thing is pretty fucked up. I cannot put it more politely than this. Most of the enterprise clients of mine have 30 to 60 day payment cycles which involve a lot of paper, rubber stamps and signatures. That is just retarded. To add insult to injury the government expects you to pay service tax (due on the date of invoice) for the money that you have not collected yet. I regret setting up a business in India. There are too many unsavoury things to deal with.
30 to 60 day payment cycles are in every country, nothing special about India. One main contractor I worked for in the UK (manages the building of buildings) used to have a dashboard showing how late payments to them were in 30, 60, 90, 90+ slots.
There are plenty of guides and advice on what you should be doing to avoid this as an SME or sole contractor.