node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »


Hindley Milner Parser

This is a parser for Haskell-alike Hindley Milner signatures with some sugar added to support JS-specific things like methods.

It is a drop-in replacement for hindley-milner-parser-js package which is based on mona. Mona has few problems: it is very slow if used with Mocha test runner and it imports babel-polyfill by hard-code what makes it impossible to use within projects that use another version of babel-polyfill.


Install with:

$ yarn add hm-parser
# or
$ npm install hm-parser


HMP = require('hm-parser');
HMP.parse('hello :: a -> Maybe a');
// returns: 
// { 
//   name: 'hello', 
//   constraints: [], 
//   type: 
//     {type: 'function', text: '', children: [ 
//       {type: 'typevar', text: 'a', children: []}, 
//       {type: 'typeConstructor', text: 'Maybe', children: [ 
//         {type: 'typevar', text: 'a', children: []}]}]} 

See tests for more examples.