Method-based syntax for pattern matching is easier to read and grok (IMO), but it lacks the dynamic capabilities of data-oriented syntax (in Kasai, patterns can be built/manipulated at runtime). It's interesting to compare the two approaches.
const match = require('pmatch-js')
const _ = require('lodash')
const fizzbuzz = x => match(x)
.when(a => a % 3 == 0 && a % 5 == 0, 'fizzbuzz')
.when(a => a % 5 == 0, 'buzz')
.when(a => a % 3 == 0, 'fizz')
.otherwise(a => a)
console.log(
_.range(1, 101).map(fizzbuzz).join(' ')
)
But maybe you mean something totally different :-)EDIT: Ah I think I know what you mean. Your lib takes an array of tuples to define the patterns. Sorry for the confusion.
[...Array(100).keys()].map(v=>v+1)
A little bit longer but no dependencies. import _range from "lodash/range";