当我第一次偶然发现defaultTimeLocale
中的常量System.Locale
时,我认为它应该包含当前语言环境的默认TimeLocale。
经过一番尝试后,我意识到它始终包含相同的常量,并且查看System.Locale
的源代码后很快发现它实际上只是一个常量。 (后来我意识到该类型也告诉我。由于defaultTimeLocale
不是IO
值,并且不接受任何参数,因此它必须是常量。)
在Haskell中,相对于当前语言环境如何获取当前TimeLocale
?
最佳答案
System.CurrentLocale.currentLocale :: IO TimeLocale
从包current-locale
看起来很合适。
我没有测试。查看其源代码,它应该可以工作。我实际上并不非常喜欢它,因为在它的下面产生了四个
date
子进程(!),对于这个简单的任务恕我直言,这实在是太过分了。可能可以改写为使用某些C或POSIX函数。