嗨我是被卡住,我不知道如何着手:哈斯克爾,有一個元組進行BIDMAS和打印結果
有了一個元組(2,4)已經執行所有操作,並與打印結果,例如
(2,4, '+',6),(2,4, '*',8)
我的想法是這樣的
operaciones X = [(X,行動, finalValue)| X < - X,行動< - 行動,最終值< - 最終值]
但我不能確定如何assing乘法加法等,並計算出操作的結果...任何建議,帶領跟蹤我?
感謝
嗨我是被卡住,我不知道如何着手:哈斯克爾,有一個元組進行BIDMAS和打印結果
有了一個元組(2,4)已經執行所有操作,並與打印結果,例如
(2,4, '+',6),(2,4, '*',8)
我的想法是這樣的
operaciones X = [(X,行動, finalValue)| X < - X,行動< - 行動,最終值< - 最終值]
但我不能確定如何assing乘法加法等,並計算出操作的結果...任何建議,帶領跟蹤我?
感謝
所以,我們要做的第一件事就是讓操作列表和他們的名字
ops = [((*), '*'), ((+), '+'), ((-), '-'), (div, '/')]
-- div is integer division
接下來我們處理實際的功能可按:
operations (x, y) = [ (x, y, do something here) | (op, name) <- ops]
凡do something here
格式名稱和結果。由於這非常簡單(提示僅適用於x和y),我不會提供完整的解決方案。不過這是一個好的開始。
第一種方案當然可以
operations (x, y) = [ (x, y, '+', x+y), (x, y, '*', x*y) ]
更多的元組就延長了更多的操作。
我看到了,我還可以添加謂詞,以確保沒有冗餘,如(4,2, ' - ',2)和(4,2,'/',2)產生相同的結果或使用mod檢查ineteger除法,謝謝! –
好吧,我已經擴展了操作,但是如果我想在打印之前爲每條語句添加條件呢?例如,只有當x'mod'y =整數時,加法總是可以計算但分配,xy只有當x大於y並且乘法也總是爲真時,所以我只希望2個操作的條件不應該適用於所有, t看到它的工作 - .-(不能讓它工作) –
謝謝,我看到你在那裏做了什麼!我有一個與所有opperands最初名單,但沒有想過分配他們的名字! –
我很高興你找到我的答案有幫助,如果它解決了你的問題,你可以檢查旁邊的綠色檢查來標記這個問題作爲回答 – jozefg