小编Joh*_*Poe的帖子

如何为强制长度为2 ^ n的向量类型定义可用的Applicative实例

对于某些应用程序,我需要长度为$ 2 ^ n $的向量。为了使长度与某些操作相匹配,我使用ist应用实例定义了我的类型,如下所示:

{-# LANGUAGE GADTs, DataKinds, FlexibleInstances, FlexibleContexts #-}
data Nat = Z | N Nat
data Vector n t where
  S :: t -> Vector Z t
  V :: Vector n t -> Vector n t -> Vector (N n) t

instance Functor (Vector n) where
  fmap f (S t ) = S (f t)
  fmap f (V t t') = V (fmap f t) (fmap f t')

instance Applicative (Vector Z) where
  pure = S …
Run Code Online (Sandbox Code Playgroud)

haskell

11
推荐指数
1
解决办法
83
查看次数

标签 统计

haskell ×1