Generalizzazione degli operatori di controllo *F*?

Algoritmi, discussioni sulle possibili implementazioni, matematica, fisica e tutti gli argomenti correlati alla programmazione
Avatar utente
Pinky_Pie95
Membro
Messaggi: 95
Iscritto il: 21/06/2012, 10:59
Specialità: Teorico nullafacente
Località: Novunque
Contatta:

Generalizzazione degli operatori di controllo *F*?

Messaggio da Pinky_Pie95 »

E' da un po' di tempo che ci stavo pensando.
In pratica, tutti sappiamo che gli operatori di controllo *F* possono essere definiti in CPS come delimitazione e reificazione della continuazione di una continuazione (o metacontinuazione, se vogliamo), e tale metacontinuazione non è altro che uno stack di continuazioni e prompt, no?
Però pensavo, non sarebbe possibile generalizzare il tutto ed avere metametacontinuazioni, metametametacontinuazioni, etc? Il mio tentativo di formalizzare qualcosa salendo di un solo livello non ha dato molti frutti, infatti ho sviluppato non una, non due, ma ben 4 definizioni diverse di metacontrol0.

Qualcuno ha qualche idea?

Avatar utente
Feschio
Membro d'elite
Messaggi: 1476
Iscritto il: 02/07/2010, 8:19
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Feschio »

Xeryan ha scritto:Signore ha sbagliato strada, la NASA è da un'altra parte :mrgreen:
*facepalm*
Valta Korpiklaani! Finlandia Rulez
Nix ha scritto:Lego, tu piaccono alle rosse pescie dimezza cotte?

Avatar utente
Folkwine
Membro
Messaggi: 212
Iscritto il: 26/07/2011, 13:45
Specialità: Interfacce Grafiche
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Folkwine »

:baron: Aggiungerei che la supercazzola con scappellamento a destra, come se fosse antani, per due.

Avatar utente
Tiger
GMI Guru
Messaggi: 2626
Iscritto il: 07/08/2011, 14:01
Specialità: Usare i siti porni
Uso: GM:Studio 1.4 Master
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Tiger »

WTF _DT è un account falso creato da Nix per dominare il mondo.
ImmagineImmagine

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Tizzio »

Tiger07 ha scritto:WTF _DT è un account falso creato da Nix per dominare il mondo.
nono è uno conosciuto in chat

Avatar utente
Tiger
GMI Guru
Messaggi: 2626
Iscritto il: 07/08/2011, 14:01
Specialità: Usare i siti porni
Uso: GM:Studio 1.4 Master
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Tiger »

se...come Filostorm, Ueila e altri ancora.
ImmagineImmagine

Avatar utente
Pinky_Pie95
Membro
Messaggi: 95
Iscritto il: 21/06/2012, 10:59
Specialità: Teorico nullafacente
Località: Novunque
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Pinky_Pie95 »

No, fortunatamente non sono Nix. irc.azzurra.org@#irchell come prova.

Comunque, ancora nessuna risposta costruttiva? Possibile?

Avatar utente
Tiger
GMI Guru
Messaggi: 2626
Iscritto il: 07/08/2011, 14:01
Specialità: Usare i siti porni
Uso: GM:Studio 1.4 Master
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Tiger »

Dubito che qualcuno abbia capito cosa intendi...
ImmagineImmagine

Avatar utente
Pinky_Pie95
Membro
Messaggi: 95
Iscritto il: 21/06/2012, 10:59
Specialità: Teorico nullafacente
Località: Novunque
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Pinky_Pie95 »

Tiger07 ha scritto:Dubito che qualcuno abbia capito cosa intendi...
Ah. Se non qualcuno non ha capito qualche parte sono disposto a spiegare, basta chiedere.

Avatar utente
Tiger
GMI Guru
Messaggi: 2626
Iscritto il: 07/08/2011, 14:01
Specialità: Usare i siti porni
Uso: GM:Studio 1.4 Master
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Tiger »

ehm :hum: ...
SPIEGA
ImmagineImmagine

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Tizzio »

_DT ha scritto:
Tiger07 ha scritto:Dubito che qualcuno abbia capito cosa intendi...
Ah. Se non qualcuno non ha capito qualche parte sono disposto a spiegare, basta chiedere.
dal primo all'ultimo carattere

Avatar utente
Pinky_Pie95
Membro
Messaggi: 95
Iscritto il: 21/06/2012, 10:59
Specialità: Teorico nullafacente
Località: Novunque
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Pinky_Pie95 »

Ok, spiego ``dal primo all'ultimo carattere''.

Una continuazione è il contesto dove una espressione viene valutata. Immaginate

Codice: Seleziona tutto

f(g(x),y)
Il contesto (la ``continuazione'') dove g(x) viene valutato (ovvero dove la valutazione continua) è

Codice: Seleziona tutto

f({},y)
Possiamo esprimere la continuazione f({},y) come una funzione:

Codice: Seleziona tutto

k = λres.f(res,y)
Il continuation passing style (CPS) non è altro che trasformare lo stile diretto

Codice: Seleziona tutto

f(g(x),y)
dove tutte le continuazioni sono implicite ad uno stile dove tutte le continuazioni sono esplicite, quindi quell'espressione in CPS sarebbe qualcosa tipo:

Codice: Seleziona tutto

λk.g(x,λres.f(res,y,k))
Tutte le funzioni in CPS non ritornano, ma prendono come argomento una continuazione e ritornare da una funzione non è altro che chiamare la continuazione con i valori che si vogliono ritornare. Esempio:

Codice: Seleziona tutto

g(x) = -x
g'cps(x, k) = k(-x)
Nonostante nessuno con un minimo di amor proprio scriverebbe mai tutto il suo codice in CPS, risulta utile in parser e codice asincrono (pensate ai callback in JS), ma il vero vantaggio sta nell'usarlo come IR nel compilatore, in quanto ha praticamente le stesse qualità di SSA, e il poter reificare (cosificare, rendere cosa/oggetto) la continuazione.
Immaginate se ci fosse una funzione che chiameremo callWithCurrentContinuation (per gli amici call/cc o CWCC) che, come suggerisce il nome, chiama una funzione con la continuazione corrente come argomento reificata come procedura abortiva (ovvero che scarta il contesto/la continuazione corrente e non ritorna). In effetti, questa funzione esiste, ed è implementata di solito così in CPS:

Codice: Seleziona tutto

CWCC(f,k) = f(λ(x,k').k(x), k)
CWCC di solito viene usato in sistemi che supportano solo la reificazioni di continuazioni non delimitate.
CWCC è abbastanza inutile da solo, in quanto le continuazioni non delimitate senza stato mutabile non sono in grado nemmeno di implementare le eccezioni. Un modo più espressivo di sfruttare le continuazioni è delimitare, catturare e reificare solo parte di essa. Oltre alla solita continuazione, è aggiunta una metacontinuazione che non è altro che una lista di continuazioni, questa metacontinuazione è gestita dagli operatori *F*.
Ci sono 4 operatori *F*: -F-, -F+, +F-, +F+. Questi operatori, chiamati anche, rispettivamente, control0, shift0, control e shift, catturano la continuazione corrente fino ad un ``prompt''. Il ``prompt'' è la cosa che delimita la continuazione.
L'unica variazione tra i 4 operatori è come inseriscono i prompt nella metacontinuazione:
- control0 consuma il prompt delimitante la continuazione catturata.
- shift0 consuma il prompt delimitante la continuazione catturata e ne aggiunge uno all'interno della continuazione reificata.
- control lascia il prompt delimitante.
- shift lascia il prompt delimitante e ne aggiunge uno all'interno della continuazione reificata.
control0 può implementare facilmente gli altri 4 in questo modo:

Codice: Seleziona tutto

shift0(f)  = control0(λk.f(λx.prompt(k(x))))
control(f) = control0(λk.prompt(f(k)))
shift(f)   = control0(λk.prompt(f(λx.prompt(k(x)))))
Varie estensioni, tipo taggare i prompt e catturare continuazioni fino a certi tag esistono, ma il mio problema è un altro: se aggiungere una metacontinuazione e prompt ha dato vita a questi operatori di controllo, aggiungere una metametacontinuazione e metaprompt cosa potrebbe comportare? In che modo dovrei generalizzare il tutto poi? E quindi ho postato il thread qui per sentire le idee del popolo.

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Tizzio »

solo una persona può rispondergli 8)

Avatar utente
Annoyed grunt
Membro d'elite
Messaggi: 1422
Iscritto il: 10/04/2009, 16:21
Uso: GM:Studio 2
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Annoyed grunt »

Presto, prendete il fischietto magico e chiamate Baron! :lol:
Immagine

Avatar utente
Lego
Membro d'elite
Messaggi: 1327
Iscritto il: 26/05/2010, 13:31
Specialità: Creare concept
Località: In un file .gmk
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Lego »

A me sa di troll... :fapensare:
Statene certi, ci rivedremo molto presto.
---------------------------------------------------------
Vuoi info sul forum e Game Maker: Studio? Clicca il link sotto!
http://gmitalia.altervista.org/gmi_foru ... f=1&t=8522

Avatar utente
Pinky_Pie95
Membro
Messaggi: 95
Iscritto il: 21/06/2012, 10:59
Specialità: Teorico nullafacente
Località: Novunque
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Pinky_Pie95 »

Lego ha scritto:A me sa di troll... :fapensare:
I miei troll sono più elaborati di così. Sono genuino.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Jak »

Sto trovando interessante l'argomento(potrebbe servirmi per l'njine) ma attualmente l'argomento non lo conosco e l'unico che può risponderti è sicuramente baron. Visto che so all'incirca cosa sa baron dovrebbe conoscere l'argomento anche se non so quanto lui ti possa aiutare.
2-3 persone xeryan? Ottimista :lol:

PS: Su wikipedia si rispecchia un po quello che dice quindi è possibile sia davvero genuino :fapensare:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da BaronVsCorsar »

mi spiace deluderti jak, ma non conosco assolutamente l'argomento.
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
Pinky_Pie95
Membro
Messaggi: 95
Iscritto il: 21/06/2012, 10:59
Specialità: Teorico nullafacente
Località: Novunque
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Pinky_Pie95 »

Dovrò andare alla cieca quindi. Peccato.
Jak, se ti serve chiedi pure.

Avatar utente
Folkwine
Membro
Messaggi: 212
Iscritto il: 26/07/2011, 13:45
Specialità: Interfacce Grafiche
Contatta:

Re: Generalizzazione degli operatori di controllo *F*?

Messaggio da Folkwine »

Termini tecnici a profusione per formare una sbrodaglia di concetti teorici senza nemmeno un minimo di accenno di esempio o di applicazione pratica di quanto hai scritto.

E' evidente, anche solo semplicemente dando un'occhiata rapida agli altri topic del forum, che ciò che scrivi è adatto più ad un matematico/informatico teorico che ad un gruppo di dilettanti programmatori di gamemaker. Non ha senso quindi aspettarsi risposta da noi su un'argomento che nemmeno riusciamo ad afferrare visto il modo in cui l'hai scritto. Non dico che sia sbagliato, anzi, probabilmente è tutto corretto e logico, ma se parli con termini così tecnici, di funzioni matematiche a gente che a momenti sa usarti solo if, then, else, o sei pirla tu, o ci prendi apposta per il culo, non vedo altre soluzioni.

Altrimenti, se vuoi veramente una risposta, ti consiglio di rivolgerti altrove, oppure trasformare il tutto su di un esempio pratico diretto all'interno di un progetto di sviluppo di un game/software dove forse potremmo capirci qualcosa di più. :sisisi:

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti