module Main
alicebob :: String -> String
alicebob "alice" = "Hi alice"
alicebob "bob" = "Hi bob"
alicebob _ = "Hi person whose name is neither alice nor bob."
greet :: IO()
greet = do
pu
我已經給出了一個任務,用於對列表中的哪個列表中的哪個 未包含在另一個列表中進行排序。 在這種情況下,它是沒有銀行賬戶的NI號碼。 的類型如下: type NI = Int
type Age = Int
type Balance = Int
type Person = (NI, Age, Balance)
type Bank = [Person]
t
假設我們有兩個函數(a -> b -> c)。我想要有一個函數,它適用於a和b將給出d,從c合併指定的函數(c -> c -> d)。我想出了用箭頭此解決方案: combine :: (a -> b -> c) -> (a -> b -> c) -> (c -> c -> d) -> (a -> b -> d)
combine f g op = ((uncurry op) .) . (uncur
以下似乎工作......但它似乎笨拙。 data Point = Point Int Int
data Box = Box Int Int
data Path = Path [Point]
data Text = Text
data Color = Color Int Int Int
data WinPaintContext = WinPaintContext Graphics
F的組合物,和g,看起來像 f :. g = \a b -> f (g a) (g b)
是我在我的代碼找到很經常的圖案。它與一元函數組成類似,只有f是二元的,我希望g在傳遞給f之前應用於兩個參數。 當我問lambdabot將其轉換爲自由點的形式,我得到了奇怪的咒語 ,我寧願沒有在我的代碼都有,所以我最終只是寫出來的模式明確。 在這種情況下,是否有一種普遍接受的方式來編寫組合器?或者我在這種情
讓我們定義一個collapse功能坍塌任何可能嵌套Maybe (Maybe (... a)...)到Maybe a: {-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE IncoherentInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoOverlappingI