2012-01-20 10 views
5

que deben ser algo así:Plataforma (OS) en el esquema de detección de

(if (= system-type 'gnu/linux) 
    (system "make")) 

Para ser sincero, creo que mi implementación del esquema aún no puede hacerlo de todos modos, pero estoy libre de añadir realización por ella . ¿Cuál es la sintaxis de esquema habitual para la detección de plataforma?

gracias

+3

Sospecho que no existe una sintaxis estándar para esto. Pero como ocurre con muchas cosas de Scheme, es bastante fácil agregarlas a otras variantes si las implementa en una de ellas. Supongo que debe escribir una función que busque la existencia (y posiblemente el contenido) de archivos específicos que indicarían el sistema en el que se está ejecutando. Busque "/ bin/uname" para encontrar sistemas similares a Linux, por ejemplo, luego ejecútelo para averiguar los detalles. – Janne

+1

Preguntas como esta son buenas, y señalan por qué es más exacto llamar a Scheme una familia de idiomas en lugar de uno solo; la mayoría de las veces, escribir un programa requiere escribir a uno en particular, en lugar de a todos. La respuesta de Ryan es la correcta para Racket, y creo que la capacidad de respuesta de la comunidad de Racket es, en general, una buena razón para que sea tu elección. Perdón por la defensa parcializada :). –

Respuesta

8

No puedo hablar de cualquier otro programa, pero la raqueta tiene un procedimiento llamado system-type:

> (system-type) 
'unix 
> (system-type 'machine) 
"Linux ... x86_64 GNU/Linux" ;; ellipses mine, output is same as `uname -a` 
1

Y guile tiene una función uname, que devuelve una descripción como una objeto vector de esquema:

[email protected](guile-user)> (uname) 
$2 = #("Linux" "gblaptop" "2.6.39-gentoo-r3" "#4 SMP Fri Oct 21 08:12:17 PDT 2011" "i686") 
Cuestiones relacionadas