midas/defunctionalise

Types

pub type Effect(r, key) {
  Done(r)
  Bundle(
    module: String,
    function: String,
    resume: fn(Result(String, String)) -> Effect(r, key),
  )
  ExportJsonWebKey(
    key: key,
    resume: fn(json.Json) -> Effect(r, key),
  )
  Follow(
    uri: uri.Uri,
    resume: fn(Result(uri.Uri, Nil)) -> Effect(r, key),
  )
  Fetch(
    request: request.Request(BitArray),
    resume: fn(
      Result(response.Response(BitArray), effect.FetchError),
    ) -> Effect(r, key),
  )
  GenerateKeyPair(
    algorithm: effect.KeyPairAlgorithm,
    extractable: Bool,
    usages: List(effect.KeyUsage),
    resume: fn(Result(effect.KeyPair(key), String)) -> Effect(
      r,
      key,
    ),
  )
  Hash(
    algorithm: effect.HashAlgorithm,
    bytes: BitArray,
    resume: fn(BitArray) -> Effect(r, key),
  )
  Log(message: String, resume: fn(Nil) -> Effect(r, key))
  ReadDirectory(
    directory: String,
    resume: fn(Result(List(String), String)) -> Effect(r, key),
  )
  ReadFile(
    file: String,
    resume: fn(Result(BitArray, String)) -> Effect(r, key),
  )
  Serve(
    port: option.Option(Int),
    handle: fn(request.Request(BitArray)) -> response.Response(
      BitArray,
    ),
    resume: fn(Result(Int, String)) -> Effect(r, key),
  )
  Sign(
    algorithm: effect.SignAlgorithm,
    key: key,
    data: BitArray,
    resume: fn(Result(BitArray, String)) -> Effect(r, key),
  )
  StrongRandom(
    length: Int,
    resume: fn(BitArray) -> Effect(r, key),
  )
  WriteFile(
    file: String,
    bytes: BitArray,
    resume: fn(Result(Nil, String)) -> Effect(r, key),
  )
  Visit(
    uri: uri.Uri,
    resume: fn(Result(Nil, String)) -> Effect(r, key),
  )
  Zip(
    files: List(#(String, BitArray)),
    resume: fn(Result(BitArray, Nil)) -> Effect(r, key),
  )
  UnixNow(resume: fn(Int) -> Effect(r, key))
}

Constructors

Values

pub fn bundle(
  module: String,
  function: String,
) -> fn(fn(Result(String, String)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn export_jwk(
  key: key,
) -> fn(fn(json.Json) -> Effect(r, key)) -> Effect(r, key)
pub fn fetch(
  request: request.Request(BitArray),
) -> fn(
  fn(Result(response.Response(BitArray), effect.FetchError)) -> Effect(
    r,
    key,
  ),
) -> Effect(r, key)
pub fn follow(
  uri: uri.Uri,
) -> fn(fn(Result(uri.Uri, Nil)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn generate_keypair(
  algorithm: effect.KeyPairAlgorithm,
  extractable: Bool,
  usages: List(effect.KeyUsage),
) -> fn(fn(Result(effect.KeyPair(key), String)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn hash(
  algorithm: effect.HashAlgorithm,
  bytes: BitArray,
) -> fn(fn(BitArray) -> Effect(r, key)) -> Effect(r, key)
pub fn log(
  message: String,
) -> fn(fn(Nil) -> Effect(r, key)) -> Effect(r, key)
pub fn read_directory(
  directory: String,
) -> fn(fn(Result(List(String), String)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn read_file(
  file: String,
) -> fn(fn(Result(BitArray, String)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn serve(
  port: option.Option(Int),
  handle: fn(request.Request(BitArray)) -> response.Response(
    BitArray,
  ),
) -> fn(fn(Result(Int, String)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn sign(
  algorithm: effect.SignAlgorithm,
  key: key,
  data: BitArray,
) -> fn(fn(Result(BitArray, String)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn strong_random(
  length: Int,
) -> fn(fn(BitArray) -> Effect(r, key)) -> Effect(r, key)
pub fn unix_now() -> fn(fn(Int) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn visit(
  uri: uri.Uri,
) -> fn(fn(Result(Nil, String)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn write_file(
  file: String,
  bytes: BitArray,
) -> fn(fn(Result(Nil, String)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
pub fn zip(
  files: List(#(String, BitArray)),
) -> fn(fn(Result(BitArray, Nil)) -> Effect(r, key)) -> Effect(
  r,
  key,
)
Search Document