7
कोड में समारोह तर्क में मैच, वहाँ एक अजीब "पैटर्न मैच" (cradleRootDir -> projdir)
पैटर्न एक समारोह को परिभाषित करने Haskell
मुझे लगता है कि समारोह इनलाइन लागू करने के लिए होती है और नाम projdir
लिए परिणाम बांधता है।
उस निर्माण का नाम क्या है?
withGhcModEnv' :: (IOish m, GmOut m) => (FilePath -> (Cradle -> m a) -> m a) -> FilePath -> Options -> ((GhcModEnv, GhcModLog) -> m a) -> m a
withGhcModEnv' withCradle dir opts f =
withCradle dir $ \crdl ->
withCradleRootDir crdl $
f (GhcModEnv opts crdl, undefined)
where
withCradleRootDir (cradleRootDir -> projdir) a = do
cdir <- liftIO $ getCurrentDirectory
eq <- liftIO $ pathsEqual projdir cdir
if not eq
then throw $ GMEWrongWorkingDirectory projdir cdir
else a
निर्माता
data Cradle = Cradle {
cradleCurrentDir :: FilePath
, cradleRootDir :: FilePath
, cradleCabalFile :: Maybe FilePath
, cradlePkgDbStack :: [GhcPkgDb]
} deriving (Eq, Show)
एक दृश्य के पैटर्न है कि देखें। कुछ दिलचस्प उदाहरणों के लिए [यह प्रश्न] देखें (http://stackoverflow.com/q/20766841/2751851)। – duplode