2017-03-18 33 views
1

函數A => A是幺半羣,identityempty,組成爲combine。不幸的是我沒有在cats庫中找到它。庫是否爲這些函數提供了一個monoid實例?A => A在貓中的幺半羣實例

A => M[A]怎麼樣,其中M是monad還是applicative?

回答

2

貓在instances/function.scala中的實例爲A => A

A => M[A]一個單子M接縫,以形成形成具有a => M.pure(a)一個Monoid作爲empty以下combine OP:

def compose(f1 = A => M[A], f2 = A => M[A]): A => M[A] = 
    a => f1(a).flatMap { e => f2(e) } 

這並不會apeart到庫中來實現。
幺半羣法則的證明留給讀者作爲exersise。

+0

非常感謝。是'X => A [X]',其中'A'是適用的,是一個幺半羣? – Michael

+0

monad只是內生工程的範疇中的一個monoid,有什麼問題? –

+0

@Michael你可以在沒有'flatMap'的情況下寫一個'combine'嗎? – OlivierBlanvillain

相關問題