2017-05-01から1ヶ月間の記事一覧

関係と代数的データ型との相互変換についての妄想 その3

思い付き その2 class QueryUser ? where queryUser :: (?) => Key -> MonadDB User instance QueryUser ? where -- queryUser :: (HasFriends ?) => Key -> MonadDB User query = … instance QueryUser ? where -- queryUser :: (HasName ?) => Key -> Mona…

関係と代数的データ型との相互変換についての妄想 その2

思い付き その1 型レベルのリストをクエリー函数に与えてやる。(DataKinds が有効) data Attr = Id | Name | Friends data User = User { id :: Int, name :: String, friends :: [User] } query :: Proxy '[??] -> Key -> MonadDB User userFriends :: Pr…

関係と代数的データ型との相互変換についての妄想 その1

OR マッパーみたいな、関係*1とデータ型との相互変換が機械的にできたら嬉しいなという話。 シンプルなのは簡単だしすでにできる。例えば次のような関係がある場合*2、 var user base relation { id integer, name string, } key { id }; var friends base r…