Elixir 1.0.5 released(github.com) |
Elixir 1.0.5 released(github.com) |
http://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/lang/elixir/
So it'll be included in OpenBSD 5.8.
All my programming is public, so if I ever start making something with it, it'll be at https://github.com/sivers
But I'm a fan of OpenBSD, and like to make sure it stays current. I've contributed a few thousand $ over the years to help.
And I'm a fan of Dave Thomas from Pragmatic Programmers, so when I heard him raving about Elixir, I had to give it a try. I like it so far.
Good overview video:
https://www.youtube.com/watch?v=hht9s6nAAx8
Good books:
"Introducing Elixir - Getting Started in Functional Programming"
http://shop.oreilly.com/product/0636920030584.do
"Elixir in Action"
"Programming Elixir"
I just noticed the Erlang port yesterday; it was a most pleasant surprise.
Elixir is not really about the syntax, we have great tooling, our own standard library (with proper Unicode support, collections, unified API for dictionaries, etc) and our own approach to some constructs in OTP.
Feel free to ping here if you have any questions. I will make sure to check this thread again later.
I've been recommending Elixir as the language of choice to all my colleagues. I truly believe it will bring the advantages of OTP architecture to a wider audience of programmers.
`reduce(collection, [], R.map(fun)) |> :lists.reverse`
is there any chance Elixir's enum core can take a page from Clojure's transducer idea and, instead of implementing map with reduce and [], implement it with transduce and some function that steps?
I've often had the need to map and filter over strings to achieve rails-like features such as #to_url, #classify, #underscore, and #humanize... but being forced to either rewrite Enum functions for strings or constantly peppering in String.split("") and Enum.join("") feels really bad.
Don't lie, Jose; we all know it's about the syntax ;)
Kudos for the awesome language you've created.
Then, if you find you're really in to the FP Kool-Aid, I would definitely give Haskell (or OCaml) a try as well. It's a completely different ball game, but even as just a beginner -- I kinda-sorta-understand monads -- I would say that it's already improved my general programming skills.
https://pragprog.com/book/elixir/programming-elixir
I would say it's an outstanding choice to learn functional programming. The book is written for someone who knows an imperative language and wants to learn about functional programming.
The friendly, consistent syntax and the imperative-ish constructs in some places can work as a great stepping stone into the rest of the functional/declarative programming world.
* Elixirconf EU 2015: https://www.youtube.com/playlist?list=PLWbHc_FXPo2jBXpr1IjyU... (at least Michael's and Claudio's talks)
* Elixirconf 2014: http://confreaks.tv/events/elixirconf2014 (at least Martin's and Stephen's)
iex> Stream.unfold("hello", &String.next_codepoint/1) |> Enum.to_list
["h", "e", "l", "l", "o"]
The reasons we don't have first class support for this though are:1. There are multiple ways you could traverse a string. By bytes, by codepoints or by graphemes. I don't think we should pick any of those as default. Ruby did that and to this day it is source of confusion (aggravated by the behavior change from 1.8 to 1.9)
2. Modifying strings like this would be horribly inefficient. Using split/join wouldn't be recommended also as you are generating a bunch of intermediate garbage to go from string -> string. The recommended way is to rely on pattern matching and Elixir's bit syntax as the compiler will be able to optimize most cases well.