Tôi nghĩ rằng đã có một câu hỏi về điều này, nhưng tôi không thể tìm thấy một.GHC: chèn ngày biên soạn
Tôi muốn chương trình của mình in ra ngày được biên dịch. Cách dễ nhất để thiết lập điều đó là gì?
Tôi có thể nghĩ đến một số khả năng, nhưng không cái nào trong số đó là những gì bạn gọi là "dễ dàng". Lý tưởng nhất là tôi muốn có thể chỉ làm ghc --make Foo
và có Foo
in ra ngày biên soạn mỗi khi tôi chạy nó.
khả năng phi dễ khác nhau mà mùa xuân đến tâm trí:
Tìm hiểu Template Haskell. Tìm hiểu cách sử dụng
Data.Time
để tìm ngày hôm nay. Tìm cách chuyển đổi thành chuỗi. (Bây giờ chương trình của tôi yêu cầu TH để làm việc. Tôi cũng cần thuyết phục nó biên dịch lại mô-đun đó mỗi lần, nếu không tôi sẽ có được ngày biên dịch cho mô-đun đó [không bao giờ thay đổi] thay vì toàn bộ chương trình.)Viết một kịch bản lệnh shell để tạo ra một mô-đun Haskell nhỏ có chứa ngày hệ thống. (Bây giờ tôi phải sử dụng shell script chứ không phải biên dịch chương trình của tôi trực tiếp. Ngoài ra, vỏ kịch bản trên Windows lá nhiều để được mong muốn!)
ngồi xuống và viết một số mã Haskell mà tạo ra một module Haskell nhỏ chứa cuộc hẹn. (Di động nhiều hơn ý tưởng trước đó - nhưng vẫn yêu cầu các bước xây dựng bổ sung hoặc ngày được in sẽ không chính xác.)
Có thể có một số cách để thực hiện điều này thông qua Cabal - nhưng tôi thực sự muốn đóng gói chương trình nhỏ này để có được một cơ sở ngày?
Có ai có đề xuất đơn giản hơn không?
Bí danh ghc với nội dung nào đó tương đương với '' ghc -DNOW = "\" 'date' \" "' '(không biết cách tìm kiếm vỏ Windows) và trong mô-đun của bạn sử dụng' {- # LANGUAGE CPP # -} 'và' now = NOW' cho chuỗi ngày tháng. Ugly hack, có thể chỉ là xấu xí, đủ để đẩy bạn đến một thay thế sạch hơn mà mất nhiều công việc hơn. –
@DanielFischer Rõ ràng vỏ Windows thiếu khả năng thiết lập một biến từ đầu ra của lệnh. Thay vào đó, bạn phải sử dụng một hack liên quan đến 'SET/P VAR =', mà đọc văn bản từ stdin. Nếu bạn ra lệnh của một đường ống vào một tập tin, sau đó đường ống nó trở lại, bạn có thể đạt được hiệu ứng mà bạn muốn ... nhưng CHÚA GIÊSU !! > _ < – MathematicalOrchid
Ồ, wow. Thậm chí PowerShell không có khả năng đó sao? –