Funzionava benissimo, ma immagino che tu oltre a dichiarare una funzione la volessi anche eseguire... Ti ho messo a posto le parentesi (in rosso): 
codice:
var c = "marco";
c === "marco" ? (function() {
alert('ciao marco!');
var p = 'eccoti di ritorno marco!';
document.write(p);
})() : alert("non sei marco");
A differenza dell'if la condizione ternaria non necessita di parentesi tonde prima del punto interrogativo, per esprimere la condizione insomma, che diventano quindi prolisse. Ho tolto quindi le parentesi da c === "marco". La condizione ternaria puoi usarla anche così, in "campo libero", ma normalmente si usa con l'assegnazione di un valore:
codice:
document.mioForm.mioInput.value = /\W/.test(document.mioForm.mioInput.value) ? document.mioForm.mioInput.value.toLowerCase() : "Inserire solo lettere!";
Puoi anche eseguire più istruzioni per ogni condizione, a patto che siano separabili da una virgola, di cui l'ultima costituirà il valore da assegnare:
codice:
document.mioForm.mioInput.value = /\W/.test(document.mioForm.mioInput.value) ? document.mioForm.mioInput.value.toLowerCase() : alert("Inserire solo lettere!"), document.mioForm.mioInput.value.replace(/\W/i, "");