Benjamin Hodgsonのおかげで、タイプセーフなSQLインターフェイスを実装し始めました。this stackoverflow question。"Singletons Paper"を最新にする。シングルトンライブラリを使用してACharデータ型を実装する方法
アドバイスとして、私はthe singleton paperを読み始めました。私は働くコードが多くを助け、供給されたcodeの仕事を見ることを試みたことが分る。ただし、コードは3歳で、更新が必要です。すばらしいです!今私は何かを学ぶ。ここではステップ1で、タイプリテラル文字列でプロモートタイプACharを削除します。元のコードから
{-# OPTIONS_GHC -fwarn-incomplete-patterns #-}
{-# Language PolyKinds, DataKinds, TemplateHaskell, TypeFamilies,
GADTs, TypeOperators, RankNTypes, FlexibleContexts, UndecidableInstances,
FlexibleInstances, ScopedTypeVariables, MultiParamTypeClasses #-}
module DatabaseStar where
import Data.Singletons
import Data.Singletons.CustomStar
import Data.Singletons.TH
$(singletons [d|
-- A re-definition of Char as an algebraic data type.
-- This is necessary to allow for promotion and type-level Strings.
data AChar = CA | CB | CC | CD | CE | CF | CG | CH | CI
| CJ | CK | CL | CM | CN | CO | CP | CQ | CR
| CS | CT | CU | CV | CW | CX | CY | CZ
deriving (Read, Show, Eq)
-- A named attribute in our database
data Attribute a = Attr [AChar] a
-- A schema is an ordered list of named attributes
data Schema a = Sch [Attribute a]
|]
singletons-examples/DatabaseStar.hs
に私は満足のいかないことAChar
を発見し、すぐにそれはもはや必要だった実現しません。
しかし、この使用例では、タイプレベルStrings
を実装する方法がわかりません。誰かが私に調査のためのリンクやヒントを提供することができますか?