Haskell循环消耗32GB用于"简单"输出

Hen*_*nes 5 haskell out-of-memory

我还是一个哈斯克新手,所以请原谅我糟糕的代码风格.

我需要在写入文件的框中使用所有类型的字母组合.事实上,我需要所有这些线路来对旧的谜题进行蛮力攻击.一行包含26个字母和10个数字的组合.在拼图中给出,前6个字符是字母.

现在这是我的代码:

import Data.List (delete)

letters = ['A'..'Z']
allChars = letters ++ ['0'..'9']

boxContents :: [Char] -> [Char] -> [[Char]]
boxContents l lp = [a:b:c:d:e:f:delete f(delete e(delete d(delete c (delete b (delete a lp))))) | 
                 a <- l, 
                 b <- delete a l, 
                 c <- delete b (delete a l), 
                 d <- delete c (delete b (delete a l)),
                 e <- delete d (delete c (delete b (delete a l))),
                 f <- delete e (delete d (delete c (delete b (delete a l))))
                 ]

main :: IO()                    
main = writeFile "c:\\bc.txt" $ unlines $ boxContents letters allChars
Run Code Online (Sandbox Code Playgroud)

它耗尽了我的16 GB RAM并且消耗100 GB页面文件直到它死掉.我确信我可以在普通的旧C中编写一个简单的程序,它使用少于64 kB的RAM来生成这个文件.但这不是重点:关键是如何在Haskell中完成这项工作?哪里是我的错?