2008-11-08 29 views
9

Tôi đang viết một số tập lệnh Haskell dùng một lần để giải quyết một số sự cố Project Euler. Tôi không thực sự muốn phải biên dịch chúng vì số lượng thay đổi mà tôi liên tục phải thực hiện, nhưng trong một vài trường hợp tôi đã phát hiện ra rằng tôi đã hết dung lượng ngăn xếp.Làm cách nào để tăng kích thước ngăn xếp bằng runhaskell?

Các tài liệu cho runhaskell nói rằng cú pháp sau nên tăng không gian ngăn xếp:

runhaskell +RTS -K5M -RTS Script.hs 

này bao giờ, bao giờ công trình (trong bất kỳ hoán vị Tôi đã thử). Kích thước ngăn xếp luôn là 8.388,608. Điều này thật đáng buồn và tôi không tìm thấy nhiều trợ giúp trên Google.

Mọi đề xuất? Tôi đang làm gì sai?

Trả lời

8

Tôi đoán bạn đang sử dụng GHC. Chương 4 của hướng dẫn sử dụng chương trình vừa được phát hành 6.10.1 nói:

Các chỉ runghc cờ hiện đang -f /path/to/GHC, mà nói runghc mà GHC sử dụng để chạy chương trình.

Tôi không thấy lỗi được ghi tại http://hackage.haskell.org/trac/ghc. Dường như tôi rất xấu hổ. Tôi muốn đề nghị hỏi về irC#ghc, hoặc danh sách gửi thư cvs-ghc.

Trong số các trình biên dịch/trình biên dịch Haskell khác, chỉ nhc98 có vẻ cho phép bạn đặt kích thước ngăn xếp tối đa. Tùy thuộc vào hệ điều hành của bạn, nhc98 có thể là một tùy chọn.

1

Chỉ cần biên dịch.

Problem123.hs:

module Main where 
main = do 
    print solution 
solution = ... 

ngắn và ngọt ngào dòng lệnh:

ghc --make -O3 Problem123.hs 
./Problem123 

Cuối cùng lưu ý: Tôi không chắc chắn tôi sẽ gọi họ là "kịch bản".

+0

Vâng, thật dễ dàng để biên dịch bằng --make. Tuy nhiên, nó thậm chí còn dễ dàng hơn khi nhấn R trong TextMate trên OS X và có tệp được thực thi với runhaskell. Khi bạn đang hacking đi và liên tục thay đổi mọi thứ, nó chỉ là dễ dàng hơn. –

+0

Viết kịch bản luôn là một trong những mục tiêu thiết kế của Haskell và việc gọi các tập lệnh chương trình là khá phổ biến, ví dụ: http://groups.google.com/group/comp.lang.functional/browse_thread/thread/5a6df7d9b550346f?hl = vi –

1

Tôi đang làm điều tương tự (Project Euler) và đã sử dụng ghc. Bí quyết (nhờ #haskell!) Là yêu cầu thực thi để có nhiều kích thước ngăn xếp hơn là trình biên dịch .

$ ghc -O2 -o 23 23.hs 
$ ./23 +RTS -K128M 
Các vấn đề liên quan