2012-01-20 17 views
5

Questo deve essere qualcosa di simile:Platform (OS) di rilevazione nello schema

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

Per essere onesti penso che la mia realizzazione schema anche se non può farlo in ogni modo, ma sono liberi di aggiungere realizzazione per esso . Qual è la sintassi tipica dello schema per il rilevamento della piattaforma?

grazie

+3

Sospetto che non ci sia una sintassi standard per questo. Ma come con così tante cose Scheme, è abbastanza facile aggiungere ad altre varianti se lo si implementa in uno di essi. La mia ipotesi è che dovresti scrivere una funzione cercando l'esistenza (e possibilmente il contenuto) di file specifici che indichino il sistema su cui stai lavorando. Cerca "/ bin/uname" per trovare sistemi simili a Linux, quindi eseguilo per scoprire i dettagli. – Janne

+1

Domande come questa sono valide e indicano perché è più corretto chiamare Scheme una famiglia di lingue piuttosto che una singola; la maggior parte delle volte, scrivere un programma richiede di scriverlo su uno specifico, piuttosto che su tutti. La risposta di Ryan è quella giusta per Racket, e penso che la reattività della comunità di Racket in genere sia una buona ragione per fare la tua scelta. Ci scusiamo per la difesa parziale :). –

risposta

8

Non posso parlare per altri schemi, ma racchetta ha una procedura chiamata system-type:

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

E guile ha una funzione uname, che restituisce una descrizione come oggetto vettoriale schema:

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