7

Rust で Monad のような特性を実装しようとしています。ほとんどの場合、楽しみと型システムに慣れるためです。このreddit ディスカッションで説明されているように、「より高い種類」が不足しているため、Monad トレイトを完全に実装することはできないと確信していますが、どれだけ近づけるかを見たいと思っています。何らかの理由で、このコードをコンパイルできません。そうあるべきだと思われます。誰かが理由を説明できますか?

trait Monad<T> {
    fn lift(val: T) -> Self;
}

struct Context<T>{ 
    val: T 
}

impl<T> Monad<T> for Context<T> {
    fn lift(x: T) -> Context<T> {
        Context{val: x}
    }
}

fn main() { 
    let c:Context<int> = Context<int>::lift(5i);
}
4

1 に答える 1