当我第一次偶然发现defaultTimeLocale
中的常量System.Locale
时,我认为它应该包含当前语言环境的默认TimeLocale。
经过一番尝试,我意识到它总是包含相同的常量,并且查看System.Locale
的源代码很快就会发现它实际上只是一个常数。 (后来我意识到该类型也告诉我。由于defaultTimeLocale
不是IO
值,并且不接受任何参数,因此 是常量。)< / p>
Haskell在当前语言环境中获取当前TimeLocale
的方式是什么?
答案 0 :(得分:1)
System.CurrentLocale.currentLocale :: IO TimeLocale
来自包current-locale的看起来很合适。
我没有测试它。看看它的源代码,应该可行。我实际上并不喜欢它,因为它下面会生成四个 date
个子进程(!),这对于这个简单的任务来说相当过分,恕我直言。
可能会改写它来改为使用某些C或POSIX函数。