[英]How can I save a list of tuples across different functions
我想寫一個文件,其中包含有關何時可以安排考試、日期(給定所有考試的天數限制)和哪個房間(給定房間數量有限)的信息,但考試主題將根據到一個包含所有科目編號 ID、科目年份和科目名稱的文件,所有這些都在不同的行中,並且在同一個房間里不能有超過一個考試。
我想將每個主題的這 3 個值存儲在元組列表中,所以當我打印出來時,我只得到一個元組列表。 我試圖在 Haskell 中解決這個問題,到目前為止我已經到了這一點,但是,我似乎無法理解這段代碼給我的錯誤。
抱歉這個愚蠢的問題,Haskell 的新問題,變量和 function 名稱也不是英文的。
atribuituple dias sala (li:lis) tupleList = do
if dias > 0 then
atribuituplesala dias sala last(words li) tupleList
atribuituple (dias-1) sala lis tupleList
else
return()
atribuituplesala dias sala uc tupleList = do
if sala > 0 then
tupleList ++ (dias,sala,uc)
atribuituplesala dias (sala-1) uc tupleList
else
return()
save_uc_dia dias sala = do
ucs <- openFile "ucs.txt" ReadMode
exames_uc_dia_sala_W <- openFile "exames_uc_dia_sala.txt" WriteMode
let tupla = []
atribuituple dias sala (lines ucs) tupla
writeFile "exames_uc_dia_sala.txt" tupla
hClose ucs
hClose exames_uc_dia_sala_W
根據初始問題給我的所有限制,我期望在名為“exames_uc_dia_sala.txt”的文件中收到一個元組列表。
假設您正在編寫一個 Haskell 程序來創建一個從 integer n
開始計數到1
的整數列表。 如果您以類似於您的atribuituplesala
function 的風格編寫它,它將看起來像這樣:
countdown n lst = do
if n > 0 then
lst ++ [n]
countdown (n-1) lst
else
return ()
但是這個解決方案有一個很大的問題:作為 Haskell 代碼,它沒有任何意義。 沒有什么是正確的。
表達式lst ++ [n]
不會將 append n
轉換為lst
。 在“ then
”關鍵字之后將兩個表達式放在不同的行上:
lst ++ [n]
countdown (n-1) lst
不會按順序“運行”這些表達式。 最終語句return ()
並沒有“停止處理”並返回最終列表。
您對 Haskell 如何工作的大部分假設都是錯誤的,並且這些代碼都不會按您的預期工作。
(如果這有助於理解我的出發點,並且假設您對 Python 略有了解,請想象一位朋友帶着他們的 Python 代碼來找您,將 1 到 100 的數字相加,並向您展示如下內容:
x = 1
result = 0
if x < 100:
x + 1
sum(result,x)
pass
else:
return result
盡管您可以從這段代碼中了解他們的思維過程,但實際上沒有辦法幫助他們修復它,除非從頭開始為他們重寫。 很明顯,您的朋友甚至沒有學習 Python 的絕對基礎知識——變量賦值、循環和函數如何工作——他們絕對必須開始學習一些初學者教程和學習材料,然后才能解決像這樣的簡單問題。 )
因此,本着這種精神,我認為您還沒有學習 Haskell 的絕對基礎知識。在解決此類問題之前,您應該學習一些教程和學習材料。
這個 SO 問題的答案提供了一些指向良好資源的指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.