亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mkconfig.hs

?? Haskell是一種程序語言。特別的
?? HS
?? 第 1 頁 / 共 2 頁
字號:
                                     ++hc++"'")
                   exitWith (ExitFailure 2)
                   return undefined -- never reached

add :: CompilerConfig -> PersonalConfig -> IO PersonalConfig
add hc config = return $
  case localConfig config of
    Just local -> config { localConfig =
                             Just (local { knownCompilers =
                                             nub (hc: knownCompilers local)})}
    Nothing -> let global = globalConfig config in
               config { globalConfig =
                          global { knownCompilers =
                                             nub (hc: knownCompilers global)}}

{-
-- | configure for each style of compiler
configure :: HC -> String -> IO CompilerConfig
configure Ghc ghcpath = do
  ghcversion <- runAndReadStdout (escape ghcpath ++ " --version 2>&1 | "
                                  ++"sed 's/^.*version[ ]*\\([0-9.]*\\).*/\\1/'"
                                 )
  let ghcsym = let v = (read (take 3 (filter isDigit ghcversion ++ "0"))) :: Int
               in if v <= 600 then v
                  else let hundreds = (v`div`100)*100 in
                       hundreds + ((v-hundreds)`div`10)
      config  = CompilerConfig
			{ compilerStyle = Ghc
			, compilerPath  = ghcpath
			, compilerVersion = ghcversion
			, includePaths  = undefined
			, cppSymbols    = ["__GLASGOW_HASKELL__="++show ghcsym]
			, extraCompilerFlags = []
			, isHaskell98   = ghcsym>=400 }
  if windows && ghcsym<500
    then do
      fullpath <- which exe ghcpath
      let incdir1 = dirname (dirname fullpath)++"/imports"
      ok <- doesDirectoryExist incdir1
      if ok
        then return config{ includePaths = ghcDirs ghcsym incdir1 }
        else do ioError (userError ("Can't find ghc includes at\n  "++incdir1))
    else if ghcsym<500
    then do
      fullpath <- which exe ghcpath
      dir <- runAndReadStdout ("grep '^\\$libdir=' "++fullpath++" | head -1 | "
                               ++ "sed 's/^\\$libdir=[^/]*\\(.*\\).;/\\1/'")
      let incdir1 = dir++"/imports"
      ok <- doesDirectoryExist incdir1
      if ok
        then return config{ includePaths = ghcDirs ghcsym incdir1 }
        else do
          let incdir2 = dir++"/lib/imports"
          ok <- doesDirectoryExist incdir2
          if ok
            then return config{ includePaths = ghcDirs ghcsym incdir2 }
            else do ioError (userError ("Can't find ghc includes at\n  "
                                        ++incdir1++"\n  "++incdir2))
    else do -- 5.00 and above
      pkgcfg <- runAndReadStdout (escape ghcpath++" --print-libdir")
      let libdir  = escape pkgcfg
          incdir1 = libdir++"/imports"
      ok <- doesDirectoryExist incdir1
      if ok
        then do
          fullpath <- fmap escape (which exe ghcpath)
          let ghcpkg0 = dirname fullpath++"/ghc-pkg-"++ghcversion
          ok <- doesFileExist ghcpkg0
          let ghcpkg = if ok then ghcpkg0 else dirname fullpath++"/ghc-pkg"
       -- pkgs <- runAndReadStdout (ghcpkg++" --list-packages")
          pkgs <- runAndReadStdout (ghcpkg++" -l")
          let pkgsOK = filter (\p-> any (`isPrefixOf` p)
                                        ["std","base","haskell98"])
                              (deComma pkgs)
          idirs <- mapM (\p-> runAndReadStdout
                                  (ghcpkg++" --show-package="
                                   ++deVersion (ghcsym>=604) p
                                   ++" --field=import_dirs"))
                        pkgsOK
          return config{ includePaths = pkgDirs libdir (nub idirs) }
        else do ioError (userError ("Can't find ghc includes at "++incdir1))
 where
    -- ghcDirs only static for ghc < 500; for later versions found dynamically
    ghcDirs n root | n < 400   = [root]
                   | n < 406   = map ((root++"/")++) ["std","exts","misc"
                                                     ,"posix"]
                   | otherwise = map ((root++"/")++) ["std","lang","data","net"
                                                     ,"posix","num","text"
                                                     ,"util","hssource"
                                                     ,"win32","concurrent"]
    pkgDirs libdir dirs =
        map (\dir-> if "$libdir" `isPrefixOf` dir
                    then libdir++drop 7 dir
                    else if "[\"" `isPrefixOf` dir
                    then drop 2 (init (init dir))
                    else dir)
            (concatMap words dirs)
    deComma pkgs = map (\p-> if last p==',' then init p else p) (words pkgs)
    deVersion False pkg = pkg
    deVersion True  pkg = let (suf,pref) = span (/='-') (reverse pkg)
                          in case pref of "" -> pkg; _ -> reverse (tail pref)

configure Nhc98 nhcpath = do
  fullpath <- which id nhcpath
  nhcversion <- runAndReadStdout (escape nhcpath
                                  ++" --version 2>&1 | cut -d' ' -f2 | head -1")
  dir <- runAndReadStdout ("grep '^NHC98INCDIR' "++escape fullpath
                           ++ "| cut -c27- | cut -d'}' -f1 | head -1")
  return CompilerConfig { compilerStyle = Nhc98
			, compilerPath  = nhcpath
			, compilerVersion = nhcversion
			, includePaths = [dir]
			, cppSymbols    = ["__NHC__="++
                                           take 3 (filter isDigit nhcversion)]
			, extraCompilerFlags = []
			, isHaskell98   = True
			}
configure Hbc hbcpath = do
  let field n = "| cut -d' ' -f"++show n++" | head -1"
  wibble <- runAndReadStdout (hbcpath ++ " -v 2>&1 " ++ field 2)
  hbcversion <-
      case wibble of
        "version" -> runAndReadStdout (hbcpath ++ " -v 2>&1 " ++ field 3)
        _         -> runAndReadStdout (hbcpath ++ " -v 2>&1 " ++ field 4)
  dir <- catch (getEnv "HBCDIR")
               (\e-> catch (getEnv "LMLDIR")
                           (\e-> return "/usr/local/lib/lmlc"))
  return CompilerConfig { compilerStyle = Hbc
			, compilerPath  = hbcpath
			, compilerVersion = hbcversion
			, includePaths = map ((dir++"/")++)
                                              ["hlib1.3","hbc_library1.3"]
			, cppSymbols    = ["__HBC__"]
			, extraCompilerFlags = []
			, isHaskell98   = ((hbcversion!!7) >= '5')
			}
configure (Unknown hc) hcpath = do
    hPutStrLn stderr ("hmake-config: the compiler\n  '"++hcpath
                      ++"'\n  does not look like a Haskell compiler.")
    exitWith (ExitFailure 4)
    return undefined  -- never reached

-- | Work out which basic compiler.
hcStyle :: String -> HC
hcStyle path = toCompiler (basename path)
  where
    toCompiler :: String -> HC
    toCompiler hc | "gcc" `isPrefixOf` hc = Nhc98
                  | "nhc" `isPrefixOf` hc = Nhc98
                  | "ghc" `isPrefixOf` hc = Ghc
                  | "hbc" `isPrefixOf` hc = Hbc
                  | otherwise             = Unknown hc

-- | Emulate the shell `which` command.
which :: (String->String) -> String -> IO String
which exe cmd =
  let dir = dirname cmd
  in case dir of
    "" -> do -- search the shell environment PATH variable for candidates
             val <- getEnv "PATH"
             let psep = pathSep val
                 dirs = splitPath psep "" val
             search <- foldM (\a dir-> testFile a (dir++'/': exe cmd))
                             Nothing dirs
             case search of
               Just x  -> return x
               Nothing -> ioError (userError (cmd++" not found"))
    _  -> do f <- testFile Nothing (exe cmd)
             case f of
               Just x  -> return x
               Nothing -> ioError (userError (cmd++" is not executable"))
  where
    splitPath :: Char -> String -> String -> [String]
    splitPath sep acc []                 = [reverse acc]
    splitPath sep acc (c:path) | c==sep  = reverse acc : splitPath sep "" path
    splitPath sep acc (c:path)           = splitPath sep (c:acc) path

    pathSep s = if length (filter (==';') s) >0 then ';' else ':'

    testFile :: Maybe String -> String -> IO (Maybe String)
    testFile gotit@(Just _) path = return gotit
    testFile Nothing path = do
        ok <- doesFileExist path
        if ok then perms path else return Nothing

    perms file = do
        p <- getPermissions file
        return (if executable p then Just file else Nothing)
-}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲成av人在线观看导航| 亚洲欧美国产三级| 国产精品视频一二| 日日摸夜夜添夜夜添精品视频| 国产成人av电影在线| 欧美日韩国产首页在线观看| 中文字幕成人在线观看| 久草精品在线观看| 欧美日韩一区视频| 亚洲精品国产品国语在线app| 国产一区二区三区国产| 777色狠狠一区二区三区| 精品亚洲国内自在自线福利| 欧美日韩中文另类| 亚洲四区在线观看| 懂色av噜噜一区二区三区av| 精品国产一区二区三区久久久蜜月| 亚洲成人免费视| 91蝌蚪porny九色| 国产精品第一页第二页第三页| 久久99日本精品| 日韩女优制服丝袜电影| 免费成人av资源网| 欧美精品久久99久久在免费线| 一区二区三区四区激情| 一本大道综合伊人精品热热| 亚洲男同性恋视频| aaa亚洲精品| 亚洲男人的天堂在线aⅴ视频 | 97久久精品人人做人人爽50路 | 亚洲欧洲日产国码二区| 成人美女在线观看| 国产精品久久影院| 91色|porny| 亚洲综合免费观看高清完整版| 97精品视频在线观看自产线路二| 国产精品久久久久久久久免费相片 | 精品国产乱码久久久久久牛牛| 日本不卡不码高清免费观看| 日韩欧美在线影院| 极品少妇xxxx精品少妇偷拍| 亚洲一区二区三区不卡国产欧美| 日本高清无吗v一区| 亚洲夂夂婷婷色拍ww47| 6080午夜不卡| 久久99精品久久久| 国产欧美日韩久久| 99久久久无码国产精品| 亚洲在线视频网站| 欧美一二三区在线| 韩国精品在线观看| 亚洲欧洲成人精品av97| 欧美性色综合网| 美女性感视频久久| 中文一区二区在线观看| 91高清视频在线| 免费成人在线播放| 日韩一区在线免费观看| 在线播放国产精品二区一二区四区| 毛片av中文字幕一区二区| 国产偷国产偷精品高清尤物| 在线一区二区三区四区五区| 麻豆免费看一区二区三区| 日本一区二区成人在线| 欧美日韩不卡一区| 国产精品资源站在线| 亚洲一区二区综合| 久久免费精品国产久精品久久久久| 波波电影院一区二区三区| 91亚洲精华国产精华精华液| 亚洲chinese男男1069| 国产亚洲欧美日韩在线一区| 色94色欧美sute亚洲13| 国产一区二区在线免费观看| 亚洲一区二区免费视频| 国产区在线观看成人精品| 欧美精品在线观看播放| 国产a级毛片一区| 热久久免费视频| 亚洲一区二区不卡免费| 国产精品色哟哟| 精品欧美一区二区在线观看| 日本精品视频一区二区三区| 国产成人午夜精品5599| 奇米影视一区二区三区| 亚洲精品高清视频在线观看| 久久久久久**毛片大全| 91麻豆精品国产91久久久| 色视频成人在线观看免| 高清不卡一区二区| 极品销魂美女一区二区三区| 日韩电影一二三区| 最好看的中文字幕久久| 久久精品日产第一区二区三区高清版 | 91精品国产综合久久小美女| 色综合天天综合色综合av| 国产成人综合视频| 久久99精品国产麻豆婷婷| 三级久久三级久久| 亚洲国产欧美另类丝袜| 亚洲乱码中文字幕| 亚洲素人一区二区| 亚洲欧美日韩在线播放| 日韩一区在线播放| 亚洲欧洲制服丝袜| 国产精品女主播av| 国产精品视频第一区| 国产精品青草综合久久久久99| 久久久精品人体av艺术| 久久婷婷色综合| 精品国产成人系列| 欧美精品一区二区不卡| 精品国产网站在线观看| 精品免费国产二区三区 | 在线成人免费视频| 欧美日韩欧美一区二区| 欧美人与z0zoxxxx视频| 欧美一区二区日韩| 欧美一区二区成人| 欧美成人乱码一区二区三区| 精品国产sm最大网站| 亚洲精品在线一区二区| 久久久久久久久蜜桃| 国产精品女主播在线观看| 亚洲情趣在线观看| 亚洲专区一二三| 香蕉久久一区二区不卡无毒影院| 日韩成人av影视| 久久99精品久久只有精品| 国产成人午夜精品5599| 91麻豆6部合集magnet| 欧美日韩在线播放| 精品国产a毛片| 国产精品黄色在线观看| 亚洲午夜久久久久| 欧美视频三区在线播放| 欧美一区二区三区播放老司机| 精品福利av导航| 亚洲欧美乱综合| 日韩精品一级中文字幕精品视频免费观看| 日韩中文字幕麻豆| 国产福利一区在线观看| 日本道在线观看一区二区| 欧美一区二区三区视频在线观看| 久久综合久久综合久久| 亚洲欧美日韩成人高清在线一区| 视频在线在亚洲| 国产精品12区| 欧美日韩精品免费| 国产网站一区二区| 午夜在线成人av| 成人精品国产免费网站| 欧美日韩不卡视频| 国产精品伦理一区二区| 日韩影院精彩在线| 成人开心网精品视频| 欧美一区二区三区成人| 亚洲同性gay激情无套| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产福利精品导航| 欧美一区二区三级| 亚洲人成人一区二区在线观看| 免费高清视频精品| 在线视频亚洲一区| 中国色在线观看另类| 免费高清在线视频一区·| 在线区一区二视频| 国产偷国产偷亚洲高清人白洁| 亚洲成人www| 色呦呦一区二区三区| 久久久久国产精品厨房| 欧美aⅴ一区二区三区视频| 91蜜桃传媒精品久久久一区二区| 精品国产乱码久久久久久牛牛 | 亚洲天堂网中文字| 国产999精品久久久久久绿帽| 宅男在线国产精品| 亚洲一二三四区不卡| av男人天堂一区| 久久久精品人体av艺术| 久久国产三级精品| 91精品国产综合久久久蜜臀粉嫩| 亚洲精品免费在线| 色综合久久中文综合久久97| 中文幕一区二区三区久久蜜桃| 精品一区二区在线免费观看| 欧美日韩国产综合视频在线观看| 亚洲免费观看高清完整| 9久草视频在线视频精品| 国产精品三级av在线播放| 粗大黑人巨茎大战欧美成人| 国产亚洲制服色| 国产91精品精华液一区二区三区| 26uuu另类欧美| 精品一二三四区| 国产喷白浆一区二区三区| 国产伦精品一区二区三区免费| 久久久国产精品不卡| 国产91丝袜在线播放| 中文字幕一区二区视频|