Skip to content

Latest commit

 

History

History
38 lines (30 loc) · 872 Bytes

File metadata and controls

38 lines (30 loc) · 872 Bytes
imports

module Plutarch.Docs.BasicExample (fib) where 

import Plutarch.Prelude

Basic examples demonstrating Plutarch usage.

Note: If you spot any mistakes/have any related questions that this guide lacks the answer to, please don't hesitate to raise an issue. The goal is to have high quality documentation for Plutarch users!

Aside: Be sure to check out Compiling and Running first!

Fibonacci number at given index

fib :: Term s (PInteger :--> PInteger)
fib = phoistAcyclic $
  pfix #$ plam $ \self n ->
    pif
      (n #== 0)
      0
      $ pif
        (n #== 1)
        1
        $ self # (n - 1) + self # (n - 2)

Execution:

> evalT $ fib # 2
Right (Program () (Version () 1 0 0) (Constant () (Some (ValueOf integer 2))))