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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? graph.hs

?? Haskell是一種程序語(yǔ)言。特別的
?? HS
字號(hào):
-----------------------------------------------------------------------------
-- |
-- Module      :  Graph
-- Copyright   :  Thomas Hallgren?  Lennart Augustsson?
-- 
-- Maintainer  :  Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>
-- Stability   :  Stable
-- Portability :  All
--
-- Graph and Set helper functions such as difference, union, equality,
-- etc. "scceq" seems to be the only function used in hmake.
-----------------------------------------------------------------------------

module Graph(seteq, hascycleeq, mkseteq, anysameeq, allsameeq, assocdefeq,
             unioneq, intereq, diffeq, scceq, tsorteq) where
import Compat(mix)
import ListUtil(elemEq,lconcatMap, mapAccuml)
import List

#if defined(__HASKELL98__)
default (Int,Double)
#endif

-- This is actually .../lml/src/misc/util.m
tsorteq :: (String -> String -> Bool)
        -> [(String, [String])]
        -> [(String, [String])]
tsorteq eq [] = []
tsorteq eq gG =
    case partition (\(_, x) -> null x) gG of
      ([], _) -> error ("tsorteq: cycle in data\n" ++
                        lconcatMap (\(f, fs) -> f ++ ": " ++ mix fs " " ++ "\n")
                                  gG)
      (a, b) -> let a' = map fst a
                in  a ++ tsorteq eq (map (\(x, xs) -> (x, diffeq eq xs a')) b)

-- | FIX: is this supposed to test for cycles?  Doesn't seem to.  Isn't used in hmake anyway.
hascycleeq :: (a -> a -> Bool) -> [(a, [a])] -> Bool
hascycleeq eq [] = False
hascycleeq eq gG =
    case partition (\(_, x) -> null x) gG of
      ([], _) -> True
      (a, b) -> let a' = map fst a
                in  hascycleeq eq (map (\(x, xs) -> (x, diffeq eq xs a')) b)

-- | Set difference by the input function
diffeq :: (a -> a -> Bool) -> [a] -> [a] -> [a]
diffeq eq l1 l2 = filter (\x -> not (elemEq eq x l2)) l1

-- | Set intersection by the input function
intereq :: (a -> a -> Bool) -> [a] -> [a] -> [a]
intereq eq l1 l2 = filter (\x -> elemEq eq x l2) l1

-- | Set union by the input function
unioneq :: (a -> a -> Bool) -> [a] -> [a] -> [a]
unioneq eq l1 l2 = l1 ++ diffeq eq l2 l1

-- | Given an association list, get the range-item that makes the function true
assocdefeq :: (c -> a -> Bool) -> c -> [(a, b)] -> b -> b
assocdefeq eq i [] d = d
assocdefeq eq i ((k, v) : r) d =
    if eq i k then v else assocdefeq eq i r d

-- | The only Graph function used in hmake... scc means Strongly Connected Components
scceq :: (a -> a -> Bool) -> [(a,[a])] -> [[(a,[a])]]
scceq eq gG =
    let
#if defined(__NHC__)
        searchc :: Int -> [(a,Int)] -> (a,[a]) -> ((Int,[(a,Int)],[(a,[a])],Int), [[(a,[a])]])
#endif
        searchc n low vv@(v, es) =
            let n' = n + 1
                low' = (v, n') : low
                ((n'', low'', nstack, min'), cs) =
                    let f (n'', low'', stack, min') w =
                            let ((n''', low''', stack', m), cs) =
                                    let vm = assocdefeq eq w low'' 0
                                    in  if vm == 0 then
                                            searchc n''
                                                    low''
                                                    (w,
                                                     assocdefeq eq
                                                                w
                                                                gG
                                                                (error "scc-assoc"))
                                        else
                                            ((n'', low'', [], vm), [])
                            in  ((n''',
                                  low''',
                                  stack' ++ stack,
                                  if m < min' then m else min'),
                                 cs)
                    in  mapAccuml f (n', low', [vv], n') es
                cs' = concat cs
            in  if assocdefeq eq v low'' (error "scc-assoc") == min' then
                    ((n'', map (\(x, _) -> (x, maxBound)) nstack ++ low'', [], min'),
                     cs' ++ [nstack])
                else
                    ((n'', low'', nstack, min'), cs')
        (low, cs) =
            let g low vv@(v, _) =
                    if assocdefeq eq v low 0 == 0 then
                        let ((n, low', stack, min'), cs) = searchc 1 low vv
                        in  (low', cs)
                    else
                        (low, [])
            in  mapAccuml g [] gG
    in  concat cs

-- | Are all these elements equal by the input function?
allsameeq :: (a -> a -> Bool) -> [a] -> Bool
allsameeq _ [] = True
allsameeq _ [a] = True
allsameeq eq (a : b) = all (eq a) b

-- | Are any of these elements equal by the input function?
anysameeq :: (a -> a -> Bool) -> [a] -> Bool
anysameeq _ [] = False
anysameeq eq (a : b) = elemEq eq a b || anysameeq eq b

mkset' eq l [] = []
mkset' eq l (a : b) =
    if elemEq eq a l then mkset' eq l b else a : mkset' eq (a : l) b

mkseteq eq l = mkset' eq [] l

-- | Set equality by the input function
seteq :: (a -> a -> Bool) -> [a] -> [a] -> Bool
seteq eq x y = null (diffeq eq x y) && null (diffeq eq y x)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美综合在线观看第十页| 日韩亚洲欧美综合| 日韩不卡免费视频| 亚洲国产精品ⅴa在线观看| 欧美视频日韩视频在线观看| 国产成a人亚洲| 日本va欧美va精品发布| 亚洲欧洲日产国码二区| 精品成人a区在线观看| 精品婷婷伊人一区三区三| 成人a免费在线看| 久久精品国产免费看久久精品| 亚洲精品免费在线观看| 国产亚洲成aⅴ人片在线观看| 欧美人狂配大交3d怪物一区| 成人免费观看av| 国产一区久久久| 日韩avvvv在线播放| 亚洲综合色丁香婷婷六月图片| 国产欧美一区视频| 日韩免费看的电影| 欧美精品 国产精品| 色欧美88888久久久久久影院| 成人永久免费视频| 国产在线国偷精品产拍免费yy| 美洲天堂一区二卡三卡四卡视频| 一级女性全黄久久生活片免费| 国产精品夫妻自拍| 亚洲国产精品精华液2区45| 精品捆绑美女sm三区| 91精品国产一区二区| 欧美群妇大交群中文字幕| 欧洲国内综合视频| 欧美一a一片一级一片| 在线影视一区二区三区| av午夜精品一区二区三区| 成人一区二区三区在线观看| 国产精品综合久久| 丁香啪啪综合成人亚洲小说 | 国产在线视频不卡二| 日韩国产高清在线| 热久久国产精品| 日韩专区一卡二卡| 美女网站色91| 久久99国产精品久久99| 极品少妇xxxx偷拍精品少妇| 韩国在线一区二区| 国产精品一区二区男女羞羞无遮挡| 美女被吸乳得到大胸91| 麻豆精品在线看| 美女一区二区三区| 国产在线精品不卡| 成人教育av在线| 91九色最新地址| 欧美色图天堂网| 91精品在线一区二区| 日韩免费一区二区三区在线播放| 欧美大白屁股肥臀xxxxxx| 精品国产成人系列| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品三级av在线播放| |精品福利一区二区三区| 一区二区三区四区乱视频| 亚洲影院理伦片| 免费观看30秒视频久久| 久久99精品网久久| www.日韩精品| 欧美日韩一区二区欧美激情 | 中文字幕在线不卡一区 | 奇米在线7777在线精品 | youjizz国产精品| 欧美午夜精品一区二区蜜桃| 正在播放亚洲一区| 国产亚洲欧美日韩俺去了| 中文字幕亚洲视频| 日日夜夜免费精品视频| 国产一区二区在线电影| 色综合色综合色综合| 67194成人在线观看| 国产午夜精品一区二区三区视频| 亚洲精品乱码久久久久| 久久99精品网久久| 色哟哟国产精品| 精品久久久久99| 亚洲欧美自拍偷拍| 日本vs亚洲vs韩国一区三区二区| 国产成人精品www牛牛影视| 在线免费观看日本一区| 久久奇米777| 亚洲电影一区二区三区| 国产成+人+日韩+欧美+亚洲| 欧美日韩五月天| 欧美国产精品专区| 亚洲v中文字幕| 成人午夜碰碰视频| 日韩一卡二卡三卡国产欧美| 亚洲欧美怡红院| 久久精品国产久精国产爱| 在线观看亚洲精品视频| 久久久影视传媒| 日本女优在线视频一区二区| 成人午夜视频网站| 精品久久久久一区| 亚洲视频小说图片| 国产成人午夜片在线观看高清观看| 欧美日韩一区三区| 中文字幕综合网| 国产一区在线看| 一区二区三区成人| 高清shemale亚洲人妖| 日韩免费高清av| 亚洲777理论| 色婷婷久久久亚洲一区二区三区 | 久久精品国产精品青草| 精品视频色一区| 樱花草国产18久久久久| 懂色中文一区二区在线播放| 日韩精品自拍偷拍| 日本大胆欧美人术艺术动态 | 在线观看日韩av先锋影音电影院| 国产日韩av一区二区| 精品无人区卡一卡二卡三乱码免费卡 | 91猫先生在线| 国产精品成人一区二区艾草| 国产在线精品不卡| 精品欧美黑人一区二区三区| 免费在线观看成人| 欧美日韩一卡二卡三卡| 亚洲午夜久久久久久久久久久 | 国产人妖乱国产精品人妖| 免费高清成人在线| 91精品国产福利| 天天影视色香欲综合网老头| 欧美日韩综合在线| 午夜精品久久久久久久久久 | 国产日本欧美一区二区| 国产精品一区二区三区乱码 | 亚洲一区二区三区中文字幕| 91丨porny丨中文| 亚洲精品久久久久久国产精华液| 色综合天天综合色综合av | 国产成人精品影院| 日本一区二区成人在线| 成人性生交大合| 亚洲卡通欧美制服中文| 欧洲中文字幕精品| 天天免费综合色| 日韩欧美激情一区| 国内外精品视频| 国产精品毛片无遮挡高清| 成人激情图片网| 亚洲激情av在线| 欧美久久久久久久久久| 美腿丝袜亚洲综合| ww久久中文字幕| 99亚偷拍自图区亚洲| 亚洲精品成人少妇| 69久久夜色精品国产69蝌蚪网| 日本特黄久久久高潮| 久久久久久影视| av不卡免费在线观看| 亚洲自拍偷拍九九九| 欧美一区二区三区视频免费播放 | 日本不卡免费在线视频| 精品久久久久久久久久久久久久久 | 久久嫩草精品久久久精品| aa级大片欧美| 日本在线不卡一区| 国产校园另类小说区| 99国产精品国产精品久久| 亚洲无线码一区二区三区| 欧美videossexotv100| 北条麻妃一区二区三区| 午夜影视日本亚洲欧洲精品| 精品国产网站在线观看| 99精品偷自拍| 天天影视网天天综合色在线播放| 久久久国产一区二区三区四区小说 | 亚洲综合久久av| 精品国产青草久久久久福利| 99riav一区二区三区| 青椒成人免费视频| 亚洲视频在线观看三级| 精品区一区二区| 97国产精品videossex| 久久狠狠亚洲综合| 亚洲天堂2014| 精品国产凹凸成av人导航| 色综合咪咪久久| 蜜桃视频在线观看一区二区| 国产精品久久久久久久久晋中 | 亚洲国产激情av| 69精品人人人人| av不卡一区二区三区| 久久精品国产99久久6| 洋洋成人永久网站入口| 国产欧美1区2区3区| 欧美一区永久视频免费观看| 99精品视频在线播放观看| 黄一区二区三区|