簡體   English   中英

如何保存跨不同函數的元組列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM