![](/img/trans.png)
[英]How to remove duplicates from a list which might contain lists in Racket
[英]Remove Spaces From List of Lists in Racket
我正在開發PL邏輯解析器,並且需要確保輸入沒有空格或間隔均勻。 我認為刪除空格會更容易。 所以我正在寫一個函數,從輸入中刪除空格。
到目前為止,我有:
;sample input
(define KB&!alpha
'((Girl)
(~ Boy)
(~~Boy)
( ~(FirstGrade ^ ~ ~ Girl))
(Boy / Child)))
(define formatted null)
;formatting function
(define (Format_Spaces KB&!alpha)
(for/list ((item KB&!alpha))
(cond
((list? item)(Format_Spaces item))
((not (eq? item " "))(set! formatted (append formatted (list item))))
((eq? item " ")(Format_Spaces (cdr KB&!alpha)))
)
)
)
但這顯然給了我錯誤的輸出。
不僅空格仍然存在,輸出是輸入的怪異組合。 有人可以幫我嗎?
我想得到這樣的東西:
'((FirstGrade)
(FirstGrade=>Child)
(Child^Male=>Boy)
(Kindergarten=>Child)
(Child^Female=>Girl)
(Female)))
謝謝閱讀。
編輯:我試圖使輸入格式統一。 在新的示例輸入中,將(〜Boy)解析為2個符號,(~~ Boy)解析為1個符號,將(〜〜Girl)解析為3個符號。我認為這將很難解析。 尤其是符號/運算符/空格的不同變體。 (即,將“ Child ^”解析為整個符號是“ Child”,“ ^”還是“ Child ^”?)
重新編輯:
根據您在下面的評論,在我看來,您實際上將要在Racket中編寫此算法。
在這種情況下,我對你有一個更簡單的處方:不要做任何事。 特別是,您的輸入當前根本不包含任何空格。 您所看到的空格是作為Racket的顯示機制的一部分插入的,與數據庫打印機可以打印用逗號或制表符分隔的字段的方式幾乎相同。
不必擔心逗號,而是着眼於分辨率算法。 它需要什么,它產生什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.