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
Then:
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.
MIT