← Back

Modules

Leios

  • Abstract
  • Base
  • Blocks
  • Config
  • Defaults
  • FFD
  • Foreign.BaseTypes
  • Foreign.HsTypes
  • Foreign.Types
  • Foreign.Util
  • KeyRegistration
  • Network
  • Prelude
  • Protocol
  • Short
  • Short.Decidable
  • Short.Trace.Verifier
  • Short.Trace.Verifier.Test
  • Simplified
  • Simplified.Deterministic
  • SpecStructure
  • Traces
  • Voting
  • VRF
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
{-# OPTIONS --without-K #-}
module Class.Applicative.Instances where
 
open import Class.Prelude
open import Class.Functor.Core
open import Class.Functor.Instances
open import Class.Applicative.Core
 
instance
Applicative-Maybe : Applicative Maybe
Applicative-Maybe = λ where
.pure → just
._<*>_ → maybe fmap (const nothing)
 
Applicative₀-Maybe : Applicative₀ Maybe
Applicative₀-Maybe .ε₀ = nothing
 
Alternative-Maybe : Alternative Maybe
Alternative-Maybe ._<|>_ = May._<∣>_
where import Data.Maybe as May
 
Applicative-List : Applicative List
Applicative-List = λ where
.pure → [_]
._<*>_ → flip $ concatMap ∘ _<&>_
 
Applicative₀-List : Applicative₀ List
Applicative₀-List .ε₀ = []
 
Alternative-List : Alternative List
Alternative-List ._<|>_ = _++_
 
Applicative-List⁺ : Applicative List⁺
Applicative-List⁺ = λ where
.pure → L⁺.[_]
._<*>_ → flip $ L⁺.concatMap ∘ _<&>_
where import Data.List.NonEmpty as L⁺
 
Applicative-Vec : ∀ {n} → Applicative (flip Vec n)
Applicative-Vec = λ where
.pure → V.replicate _
._<*>_ → V._⊛_
where import Data.Vec as V
 
 
Applicative₀-Vec : Applicative₀ (flip Vec 0)
Applicative₀-Vec .ε₀ = []
 
-- Applicative-∃Vec : Applicative (∃ ∘ Vec)
-- Applicative-∃Vec = λ where
-- .pure x → 1 , pure x
-- ._<*>_ (n , xs) (m , ys) → {! (n ⊔ m) , zipWith _$_ xs ys -- (+ zipWith-⊔ lemma) !}
 
private module M where
open import Reflection.TCM.Syntax public
open import Reflection.TCM public
 
Alternative-TC : Alternative TC
Alternative-TC = record {M}
 
Applicative-TC : Applicative TC
Applicative-TC = record {M}