這是從我的家庭作業的一個,我一直沒能回答的問題。這是通過演示Haskell編譯器(解釋器?)如何執行程序來推理Haskell代碼。 我給出了幾個不同的功能... -- built-in
take :: Int -> [a] -> [a]
take 0 _ = []
take n (x:xs) = x : (take (n - 1) xs)
-- exchanging entries
e
乍一看我還以爲這兩個功能將工作一樣: firstM _ [] = return Nothing
firstM p (x:xs) = p x >>= \r -> if r then return (Just x) else firstM p xs
firstM' p xs = fmap listToMaybe (mapM p xs)
但他們沒有。特別是,firstM在第一個p x爲真時立
任何編程語言是否都實現邏輯運算參數(如AND,OR)的交換以便更快速地進行評估? 實例(我覺得這樣的方法可以在象Haskell懶評價語言來實現) 可以說,我們已經定義了兩個謂詞A和B。 在程序執行期間,B被評價爲「True」和A,沒有被評估 在以後執行我們的條件IF A OR B 的爭論「或」被交換,條件變得IF B OR A 條件在沒有評估的情況下評估爲「真」A
下面的代碼是否可以輸出HERE? var p = new Promise(() => console.log("HERE"))
(也就是說,不var p = new Promise(fn)始終執行fn如果p.then(…)是從來沒有所謂的做一些事情,結果?) 更具體地說,在服務人員的情況下,如果我叫Cache.delete(),但從來沒有打電話.then()關於返回值(或者我扔掉返回值),是否