Yasutaka HIGA
y :: B
f :: A -> B
f x = y
=
is a function definitionf x
is a application function f
f x
has type BHaskell
uses Monad for some meta computations(e.g. nondeterminism, side-effects, exceptions).Delta
Monad represents modification of program.Delta
represents simple modification only monotonic increase versioning (exclude branching and merging) and program has consistent type in all versions.f :: Double -> Double
f x = 42 + x
f
takes one argument.f
return a value plus 42
and x
f :: Double -> Double
f x = 42 / x
f
x
is zero, program is not unsafe.f :: Double -> Delta Double
f x = Delta (42 + x)
(Mono (42 / x))
Delta
Monad contains all modifications like list structure.Delta
is compatible with Monad-laws by Proof Assistant Language Agda
.Delta
for non-monotonic modifications.Delta
for actual programming language(e.g. Haskell, CbC)