packages feed

extensible-0.2.8: benchmarks/AtoZ.hs

{-# LANGUAGE DataKinds, TypeOperators, GADTs, BangPatterns #-}
module AtoZ where
import Data.Extensible
import Data.Coerce
data A = A Int deriving Show
data B = B Int deriving Show
data C = C Int deriving Show
data D = D Int deriving Show
data E = E Int deriving Show
data F = F Int deriving Show
data G = G Int deriving Show
data H = H Int deriving Show
data I = I Int deriving Show
data J = J Int deriving Show
data K = K Int deriving Show
data L = L Int deriving Show
data M = M Int deriving Show
data N = N Int deriving Show
data O = O Int deriving Show
data P = P Int deriving Show
data Q = Q Int deriving Show
data R = R Int deriving Show
data S = S Int deriving Show
data T = T Int deriving Show
data U = U Int deriving Show
data V = V Int deriving Show
data W = W Int deriving Show
data X = X Int deriving Show
data Y = Y Int deriving Show
data Z = Z Int deriving Show

type AtoZ = [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]

blah26 :: K0 :* AtoZ
blah26 = A 0 <% B 1 <% C 2 <% D 3 <% E 4 <% F 5 <% G 6
    <% H 7 <% I 8 <% J 9 <% K 10 <% L 11 <% M 12 <% N 13
    <% O 14 <% P 15 <% Q 16 <% R 17 <% S 18 <% T 19 <% U 20
    <% V 21 <% W 22 <% X 23 <% Y 24 <% Z 25 <% Nil

tuple26 :: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z)
tuple26 = (A 0, B 1, C 2, D 3, E 4, F 5, G 6, H 7, I 8, J 9, K 10, L 11, M 12
  , N 13, O 14, P 15, Q 16, R 17, S 18, T 19, U 20, V 21, W 22, X 23, Y 24, Z 25)

match26 :: Match K0 Int :* AtoZ
match26 = (\(A n) -> n)
  <?% (\(B n) -> n)
  <?% (\(C n) -> n)
  <?% (\(D n) -> n)
  <?% (\(E n) -> n)
  <?% (\(F n) -> n)
  <?% (\(G n) -> n)
  <?% (\(H n) -> n)
  <?% (\(I n) -> n)
  <?% (\(J n) -> n)
  <?% (\(K n) -> n)
  <?% (\(L n) -> n)
  <?% (\(M n) -> n)
  <?% (\(N n) -> n)
  <?% (\(O n) -> n)
  <?% (\(P n) -> n)
  <?% (\(Q n) -> n)
  <?% (\(R n) -> n)
  <?% (\(S n) -> n)
  <?% (\(T n) -> n)
  <?% (\(U n) -> n)
  <?% (\(V n) -> n)
  <?% (\(W n) -> n)
  <?% (\(X n) -> n)
  <?% (\(Y n) -> n)
  <?% (\(Z n) -> n)
  <?% Nil