Обнаружить операционную систему в Clojure

Существует ли эквивалент Common Lisp *features * в Clojure, так что вы можете обнаружить ОС и другую конфигурацию среды? Или я просто просматриваю Java API для этого?

Ответы

Ответ 1

Возможно использование Java API. Это достаточно легко, без смысла изобретать колесо.

user> (System/getProperty "os.name")
"Linux"
user> (System/getProperty "os.version")
"2.6.36-ARCH"
user> (System/getProperty "os.arch")
"amd64"

Ответ 2

Чтобы добавить ответ Брайана Карпера, вы можете легко создать карту свойств системы через API Java и привязать ее к символьным функциям:

(def *features* {
  :name (System/getProperty "os.name"),
  :version (System/getProperty "os.version"),
  :arch (System/getProperty "os.arch")})

Что дает вам эту структуру, например:

{:name "Windows 7", :version "6.1", :arch "x86"}

Затем выполните доступ к свойству любым из следующих способов:

(:name *features*)
(*features* :name)
(get *features* :name)

Какой бы ни плавает ваша лодка.

Ответ 3

Другие ответы касаются того, как получить системную информацию из Java довольно хорошо. Если вам нужна дополнительная помощь в его интерпретации, вот несколько примеров того, как Terracotta это сделала: