Matthew Sackman
Writer of the first prototypes of RabbitMQ
RabbitMQ
Matthew is a RabbitMQ developer, working chiefly on the core broker. He studied Computing at Imperial College for a Masters degree followed by a fair chunk of a PhD. He wrote the first prototypes of RabbitMQ in Erlang and more recently has implemented many of the scalability improvements such as the new persister, along with other features such as active/active HA.
Twitter: @hylomorphism
Twitter: @rabbitmq
Twitter: @hylomorphism
Twitter: @rabbitmq
Matthew Sackman is Giving the Following Talks
Erlando: Imitation (of syntax) is the most sincere form of flattery
Having spent time working in a number of functional languages in addition to Erlang such as Haskell, Scheme, Lisp, OCaml and others, there are many nice features of those languages that would increase expressivity of Erlang. In my case, having spent a couple of years working in Haskell before returning to the RabbitMQ fold, all sorts of features are “missing”, such as laziness, type classes, additional infix operators, the ability to specify precedence of functions, fewer parenthesis, partial application, more consistent standard libraries and do-notation. That’s a fair list, and it’ll take me a while to get around to implementing them all in Erlang, but here are two for starters.
'Cut' is a lightweight syntax for abstracting over expressions with holes in them. Similar to partial application, it permits implicit lambda abstraction without the line-noise of `funs'.
'Do' introduces Haskell's do-notation to Erlang together with an extensible implementation of monads.
Together, these extensions can be used to write code that is clearer of intent, more legible and maintainable than would otherwise be the case.
'Cut' is a lightweight syntax for abstracting over expressions with holes in them. Similar to partial application, it permits implicit lambda abstraction without the line-noise of `funs'.
'Do' introduces Haskell's do-notation to Erlang together with an extensible implementation of monads.
Together, these extensions can be used to write code that is clearer of intent, more legible and maintainable than would otherwise be the case.