DÜZENLEME: @interjay ve @Antal Spector-Zabusky'ye bu cevabın neden reddedildiğini açıkladıkları için teşekkürler. Yazdılar
Dokümantasyon biraz yanıltıcı. Değerler GHC derleyicisine kodlanmıştır. 48 yıl sonra, gerçek kodun her zaman belgeleri koyduğunu bilirsiniz. - interjay yesterday @ andy256 Belgelerin kötü olduğu konusunda kesinlikle haklısınız (gerçekten, Francisco'nun bu soruyu ilk başta neden sorduğunun bir parçası) ve karışıklığınız anlaşılabilir. Haskell ile ilgili şey, bu String değerleri çalışma zamanında değişebiliyorsa, bu korkunç bir hata olacaktır - değişkenlerin değişmesine izin verilmez. Bu, IO tipi kurucunun önemidir - "dış dünyaya" erişmesine izin verilen ve böylece sonucu değişebilen bir hesaplamayı temsil eder. Sistem çağrısı yapmak bir ES eylemine iyi bir örnektir. … [1/2] - Antal Spector-Zabusky 9 saat önce @ andy256… (Başka bir IO eylemi "küresel bir sayacı güncellemek" olabilir.) Yani bir String gördüğümüzde bunun herhangi bir iletişim kuramayacağını biliyoruz. OS altında. Bu nedenle, belki de şaşırtıcı bir şekilde Haskell'e alışkın değilseniz, bir sistem çağrısı yapmak için os :: String'i uygulamak kolay olmaz - bu tür bir değer temel Haskell'de uygulanamaz, her programcının programların nasıl olacağı beklentisini ihlal eder ve hatta derleyici ve optimize ediciyi açabilirsiniz (teorik bir endişe değil - insanların benzer problemlerle karşılaştığı Yığın Taşması cevapları vardır). [2/2] - Antal Spector-Zabusky Bu nedenle, belki de şaşırtıcı bir şekilde Haskell'e alışkın değilseniz, bir sistem çağrısı yapmak için os :: String'i uygulamak kolay olmaz - bu tür bir değer temel Haskell'de uygulanamaz, her programcının programların nasıl olacağı beklentisini ihlal eder ve hatta derleyici ve optimize ediciyi açabilirsiniz (teorik bir endişe değil - insanların benzer problemlerle karşılaştığı Yığın Taşması cevapları vardır). [2/2] - Antal Spector-Zabusky Bu nedenle, belki de şaşırtıcı bir şekilde Haskell'e alışkın değilseniz, bir sistem çağrısı yapmak için os :: String'i uygulamak kolay olmaz - bu tür bir değer temel Haskell'de uygulanamaz, her programcının programların nasıl olacağı beklentisini ihlal eder ve hatta derleyici ve optimize ediciyi açabilirsiniz (teorik bir endişe değil - insanların benzer problemlerle karşılaştığı Yığın Taşması cevapları vardır). [2/2] - Antal Spector-Zabusky ve hatta derleyici ve optimize ediciyi bile açabilirsiniz (teorik bir endişe değil - insanların benzer problemlerle karşılaştığı Yığın Taşması cevapları vardır). [2/2] - Antal Spector-Zabusky ve hatta derleyici ve optimize ediciyi bile açabilirsiniz (teorik bir endişe değil - insanların benzer problemlerle karşılaştığı Yığın Taşması cevapları vardır). [2/2] - Antal Spector-Zabusky
Şu anda iki silme oyu var. Bu sürecin ilerlemesine izin vereceğim, ancak aslında bir değeri olduğunu öneriyorum. Bir yan notta, açıklamaları sorunun zayıf olduğunu ve cevapların da olduğunu gösteriyor, çünkü Haskell acemi yaptığım mantığı kolayca takip edebiliyordu.
Orijinal cevap:
Ben bir Haskell programcısı değilim, ancak verilen iki cevap OP'nin bağladığı belgelerle eşleşmiyor.
Belgelerimi yorumlamam şu şekildedir.
os :: String
- Bu size "Programın üzerinde çalıştığı işletim sistemi" ni verir.
Bunun bilgi almak için sistem çağrısı yapmasını bekliyorum. Programın derlendiği sistem, üzerinde çalıştığı sistemden farklı olabileceğinden, derleyici tarafından eklenen bir değer olamaz. Kod yorumlanıyorsa, yorumlayıcı bir sistem çağrısı yoluyla alınması gereken sonucu sağlayabilir.
arch :: String
- Bu size "Programın üzerinde çalıştığı makine mimarisini" verir.
Yine, bunun bilgi almak için bir sistem çağrısı yapacağını umuyorum. Programın derlendiği sistem, üzerinde çalıştığı sistemden farklı olabileceğinden, derleyici tarafından eklenen bir değer olamaz.
compilerName :: String
- Bu size "Programın derlendiği veya yorumlandığı Haskell uygulaması" verir.
Bu değer derleyici / yorumlayıcı tarafından kesinlikle eklenir.
compilerVersion :: String
- Bu size " compilerName
Programın derlendiği veya yorumlandığı .
Bu değer derleyici / yorumlayıcı tarafından kesinlikle eklenir.
İlk iki çağrıyı girdi olarak değerlendirseniz de, sonuç İşletim Sistemi tarafından tutulan değerlerden gelir. G / Ç genellikle ikincil depolama alanına erişim anlamına gelir.
IO
orada biraz istiyorsauname(3)
, Hackage'da bir paket var: hackage.haskell.org/package/bindings-uname