title: Passing a data constructor instead of a Type constructor on a function
body: <pre><code>data GsdCommand =  CreateWorkspace { commandId :: CommandId , workspaceId ::WorkspaceId , workspaceName :: Text }
               | RenameWorkspace { commandId :: CommandId , workspaceId ::WorkspaceId , workspaceNewName :: Text }
               | SetGoal  { commandId :: CommandId ,
                            workspaceId ::WorkspaceId ,
                            goalId :: GoalId ,
                            goalDescription :: Text} deriving Show
  </code></pre>
  
  <p>I would like to handle a specific command into one function, 
   e.g in pseudo code :</p>
  
  <pre><code>{-# LANGUAGE DataKinds #-}
  handle :: 'CreateWorkspace -&gt; CommandDirective GsdState
  </code></pre>
  
  <p>I was thinking that I could lift value constructors into types, but I don't know how to do it actually...</p>