Hacker News new | ask | show | jobs
by rdtsc 4573 days ago
I really like Elixir.

Not only does it have a clean, pleasant syntax, macros, but it has all the good parts from Erlang, namely:

* BEAM VM (isolated heaps, very well tuned scheduler, concurrent garbage collection)

* Pattern matching, once you've tried it, it is hard to go back.

* Ability to call Erlang code

BEAM VM is really a secret gem and many didn't get a chance to play with it because they didn't like Erlang's syntax (personally, I do like Erlang's syntax, but I think many don't). Well there is little excuse now.

If you like DSLs and macros (yes, yes, I know it makes many people scared) this you can do neat stuff like these projects:

https://github.com/elixir-lang/ecto -- DSL to query databases

2 comments

This is what I came here to say. All of the 'raw language' niceties that Geoffrey mentioned in the article are true, but for me one of the greatest things in Elixir is processes. Just, the way the Erlang system operates is so well thought out, I'm more impressed every time I learn something new.

Shameless self-promotion here - I run http://www.elixirsips.com, which is a screencast series that releases 2 new episodes per week covering some topic in Elixir. I started it out as I started learning Elixir, and I've been going for quite a while now (I'm on Episode 33 next, so 16 weeks so far). It's the most fun I've had with a programming language since I first saw Ruby, and I think the BEAM VM is the future (as is Rust/Go/clojure's core.async, other concurrency-oriented programming models, etc).

So yeah, Elixir's amazing and everyone should play with it. I think just looking at these items mentioned in the article aren't even giving it a fair shake - learn about Erlang's concurrency and distribution models, or else you aren't even scratching the surface :)

I'm a subscriber to Elixir Sips, and just wanted to say that the videos are well worth it to anyone looking to get into Elixir. I'm a happy subscriber, and look forward to more videos.

knewter doesn't know me, and I don't know him.

Thank you for this resource.
Thanks for posting this. I am going to subscribe to this. I've been hearing nothing but wonderful things about Elixir but have been struggling with making some mental connections. Your videos look like they'll help me make those connections.
Thanks for the pattern matching tip. Will investigate.

I'm looking for a better way to navigate of graphs. Objects graphs, DOMs, parse trees.

Currently, I rely on iteration and glob style paths. http://en.wikipedia.org/wiki/Glob_(programming)

For instance, excerpt from https://code.google.com/p/lox/source/browse/trunk/test/lox/t...

  InputStream in = new FileInputStream( "./test/lox/test/zooinventory.xml" );
  Document doc = LOXHandler.load( in );
  List<Element> animals = doc.find( "Inventory/Animal" );
  System.out.println( "animals found: " + animals.size() );

  for( Element animal : animals )
  {
    String habitat = animal.findFirstString( "Habitat" );
    String lifestyle = animal.findFirstString( "Lifestyle" );
    ...
  }

  ...

  // Actual example of some globbing
  List<Element> names = doc.find( "Inventory/*/Name" );
  System.out.println( "names found: " + names.size() );
What I really want in a future language is for those glob paths to be first order objects, not magical strings. Then the compiler can do some sanity checking, editor can do autocompletion, etc.

Warning: Lightweight Objects for XML is a personal project, very alpha. https://code.google.com/p/lox/