Skip to content

Instantly share code, notes, and snippets.

@MaisaMilena
Created May 21, 2019 12:14
Show Gist options
  • Save MaisaMilena/15f3d0f4333417244ecb7f8726e8d4db to your computer and use it in GitHub Desktop.
Save MaisaMilena/15f3d0f4333417244ecb7f8726e8d4db to your computer and use it in GitHub Desktop.
def inverse: [t]
  (t [a] [b] [c] [d]
    [x] (x d c b a)
  )
  
def lastEle: [t]
  (t [a] [b] [c] [d] d)

def firstEle: [t]
  (t [a] [b] [c] [d] a)

def main:
  let tup = [t] (t 1 2 3 4) 
  (firstEle tup)

Ordena 2 números:

def orderTup: [t]
  (t [a] [b] // abre a tupla e coloca os argumentos em contexto
    get &(a1, a2) = cpy a 
    get &(b1, b2) = cpy b

    let order =
      if {a1 > b1}
			// os valores aqui estão fora do contexto e só representam
			// a tupla que será retornada
      then: [m] [n] [x] (x m n) 
      else: [a] [b] [x] (x a b)
    
    (order a2 b2)
  )

def main:
  let tup = [t] (t 1 5) 
  (orderTup tup)

def paus: [p][o][e][c]p
def ouro: [p][o][e][c]o
def espa: [p][o][e][c]e
def copa: [p][o][e][c]c
def case: [nipe][P][O][E][C]
 (nipe P O E C)

def main:
  (case ouro
    "sou paus"
    "sou ouro"
    "sou espa"
    "sou copa")

nipes: funções de 4 argumentos e retorna 1 deles

case: recebe 5 argumentos, sendo nipe paus, ouro, espa ou copa. Retorna o valor associado à nipe

def main:
  let tup = [t] (t 1 2) 
  (tup [x][y] 
  {x + y}
  )

  let pair = &(1, 2)
  get &(a, b) = pair
  {a + b}

def tup2Higher: [t]
  (t [a] [b] 
    get &(a1, a2) = cpy a 
    get &(b1, b2) = cpy b

    let higher = 
      if {a1 > b1}
        then: [m] [n] (m)
        else: [m] [n] (n)

    (higher a2 b2)
  )

def main:
  let tup = [t] (t 1 5)
  let lup = [t] (t 9 6)
  ([m] [n] [x] (x m n) {1 + 4} (tup2Higher lup)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment