我需要一些幫助,以解決Haskell中的問題。Haskell任務 - 什麼是解決方案
我想創建一個函數,它需要三個參數 - 第一個參數是一個表示算術運算的字符,如'+', '-', '*', '/'
,後面兩個參數列表中的數字,這個函數應該返回一個數字列表這樣給出的參數
'-' [3,4,7] [-4,6,6]
它將返回
[7,-2,1]
,但我不知道如何開始。
另外,如何計算結果列表的最小元素?
我需要一些幫助,以解決Haskell中的問題。Haskell任務 - 什麼是解決方案
我想創建一個函數,它需要三個參數 - 第一個參數是一個表示算術運算的字符,如'+', '-', '*', '/'
,後面兩個參數列表中的數字,這個函數應該返回一個數字列表這樣給出的參數
'-' [3,4,7] [-4,6,6]
它將返回
[7,-2,1]
,但我不知道如何開始。
另外,如何計算結果列表的最小元素?
在功能
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
和
minimum :: Ord a => [a] -> a
看看。
你應該可以用這些建立你想要的功能。
我不想直接告訴你答案,但這裏有一個提示:Control.Applicative
導出功能<$>
和<*>
,類型ZipList
,可一起使用,以你想要的工作。
JFYI,這對初學者沒有幫助。 – luqui
那麼它可能會有所幫助,如果它包含幾個這些函數如何工作的例子。但是,對於初學者來說,Control.Applicative文檔並不意味着什麼。 –
什麼:
f opStr x y = zipWith op x y where
op = case opStr of
'+' -> (+)
'-' -> (-)
'*' -> (*)
'/' -> (/)
或者更短,可以替代由第一線;
f opStr = zipWith op where
爲什麼結果列表中的第一個元素是'-1'而不是'7'('3 - (-4)')?還有什麼你的意思是結果需要最低?什麼最小?你的意思是你只是想返回列表的最小值而不是整個列表? – sepp2k
對不起,我犯了一個錯誤..結果是[7,-2,1]。是的,我希望列表中的最小值,無論如何。我試了一下
func1 op l1 l2 = [a op b |一個< - l1,b <- l2]
但它不工作,我不知道如何解析字符串' - '運算符MINUS。 – user2579047
謝謝,這就是我想要的,但在這裏我輸入( - )..是否可以使用' - ' – user2579047