on fe1e5d2 help sign in
elk/src/AST/Module/Name.hs
49 lines 794 B history raw
1module AST.Module.Name where
3import Data.Binary
4import qualified Data.List as List
6import qualified Elm.Package as Package
9type Raw = [String] -- must be non-empty
12data Canonical = Canonical
13 { _package :: Package.Name
14 , _module :: Raw
15 }
16 deriving (Eq, Ord, Show)
19inCore :: Raw -> Canonical
20inCore raw =
21 Canonical Package.coreName raw
24toString :: Raw -> String
25toString rawName =
26 List.intercalate "." rawName
29canonicalToString :: Canonical -> String
30canonicalToString (Canonical _ rawName) =
31 toString rawName
34isNative :: Raw -> Bool
35isNative name =
36 case name of
37 "Native" : _ ->
38 True
40 _ ->
41 False
44instance Binary Canonical where
45 put (Canonical home name) =
46 put home >> put name
48 get =
49 Canonical <$> get <*> get