DrBoolean / spotify-fp-example

Egghead.io lesson
41 stars 13 forks source link

can't use the Fn monoid(semigroup) #1

Open ghost opened 7 years ago

ghost commented 7 years ago

I'm trying to use your implementation of Fn monoid to concat some functions but it keeps throwing me an error saying concat is not a function...

const Fn = f =>
({
  fold: f,
  concat: o =>
    Fn(x => f(x).concat(o.fold(x))),
  inspect: () => `Fn(${f})`
})

const fn = Fn(x => x + 1)

console.log(fn.concat(Fn(x => x - 1)).fold(3).inspect()) //TypeError: f(...).concat is not a function

i understand that f(x) does not have the concat method because f is not wrapped inside Fn on this context, but what am getting wrong... is this a bug or i am not using it propperly?

aabrook commented 7 years ago

You've probably long resolved the issue @mcarvalho but I think the referenced PR will fix the problem you were having.

DrBoolean commented 7 years ago

Each Fn should return a monoid