/- Copyright (c) 2017 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Sebastian Ullrich The identity Monad. -/ prelude import init.control.lift universe u def Id (type : Type u) : Type u := type @[inline] def Id.pure {α : Type u} (x : α) : Id α := x @[inline] def Id.bind {α β : Type u} (x : Id α) (f : α → Id β) : Id β := f x @[inline] def Id.map {α β : Type u} (f : α → β) (x : Id α) : Id β := f x instance : Monad Id := { pure := @Id.pure, bind := @Id.bind, map := @Id.map } @[inline] def Id.run {α : Type u} (x : Id α) : α := x instance : MonadRun id Id := ⟨@Id.run⟩