module Main where

import Prelude

import Ask (class Ask, handleAsk)
import Ask as Ask
import Effect (Effect)
import Effect.Console (logShow)
import Io (class Io, handleIo)
import Io as Io
import Abilities as Abilities

something :: Ask Int => Io => Int
something = Abilities.do
  let a = 3

  Io.assert $ a + 1 == 4
  Io.debugLog $ show a

  -- Let works just as well
  b <- Io.readFile "b.txt"

  Io.debugLog $ Io.readFile "a.txt" <> "!!"
  Io.debugLog b

  a + Ask.ask * 2

main :: Effect Unit
main = do
  result <- handleAsk 3 $ handleIo something
  result' <- handleAsk 5 $ handleIo something
  logShow [result, result']