Boa noite povo
Continuando a tradução de “A Formal Language for Analyzing Contracts” . No versículo último vimos a parte 14, no de hoje vemos a 15.
Funções Básicas
doOn(right, period) =
    when withinPeriod(p) { right }
# deve executar “right [direito]” dentro de (period [período])
# = obrigação com cupom zero = cupom
#
doOnDemand(right) =
    when choiceOf(Holder) { right }
# deve executar o “right [direito]” a qualquer momento / sob demanda
#
doOn(contract, period) =
    when withinPeriod(p) { contract }
# deve executar “contract [contrato]” dentro de (period [período])
#
doOnDemand(contract) =
    when choiceOf(Holder) { contract }
# deve executar “contract [contrato]” a qualquer momento / sob demanda
#
Mais Exemplos
future(rightA, rightB, p) =
    Holder doOn(rightA, p)   with   Counterparty doOn(rightB, p)
#
# [restrição adicional p = p não é mera composição algébrica]
callOptionAmerican(rightA, rightB, t) =
    when withinPeriod(whenWritten, t)
        when choiceOf(Holder)
          Holder rightA  with  Counterparty rightB
#
callOptionEuro(rightA, rightB, p) =
      when choiceOf(Holder)
          Holder doOn(rightA, p)
              with Counterparty doOn(rightB, p))
#
putOptionAmerican(rightA,rightB,t) =
    when withinPeriod(whenWritten, t)
        when choiceOf(Holder)
         Holder rightA   with   Counterparty rightB
# semântica de eventos precisa armazenar choiceOf até
# ao esperar o próximo when
putOptionEuro(rightA,rightB,p) =
    when choiceOf(Holder)
        Holder doOn(rightB, p)
            with Counterparty doOn(rightA, p))
#
note(right) = demandDeposit(right) =
    Holder doOnDemand(right)
# [distinção entre portador e titular da conta não
# foi introduzido]
#
zeroCouponBond(right,p) = doOn(right, p)
#
callableZeroCouponBond(right,p) =
    when choiceOf(Holder) { right }
    when withinPeriod(p) { right }
#
bond(coupon, principal, schedule) =
    for schedule {
        doOn(coupon, schedule.next)
    } then
    doOn(principal, schedule.next)
bond(coupon, principal, schedule) =
    for schedule {
      doOn(coupon, schedule.next)
    } then
    doOn(principal, schedule.next)
Terminada a parte 15. Se você tá achando os últimos versículos estranhos é porque são bem estranhos mesmo hahaha, o próximo já volta a ser mais “normal”. Abraços e até…
