on 2d29699 help sign in
elk/src/AST/Module/Name.hs
50 lines 835 B history raw
1module AST.Module.Name where
3import Control.Applicative ((<$>),(<*>))
4import Data.Binary
5import qualified Data.List as List
7import qualified Elm.Package as Package
10type Raw = [String] -- must be non-empty
13data Canonical = Canonical
14 { _package :: Package.Name
15 , _module :: Raw
16 }
17 deriving (Eq, Ord, Show)
20inCore :: Raw -> Canonical
21inCore raw =
22 Canonical Package.coreName raw
25toString :: Raw -> String
26toString rawName =
27 List.intercalate "." rawName
30canonicalToString :: Canonical -> String
31canonicalToString (Canonical _ rawName) =
32 toString rawName
35isNative :: Raw -> Bool
36isNative name =
37 case name of
38 "Native" : _ ->
39 True
41 _ ->
42 False
45instance Binary Canonical where
46 put (Canonical home name) =
47 put home >> put name
49 get =
50 Canonical <$> get <*> get