Generalizzazione degli operatori di controllo *F*?
- Pinky_Pie95
- Membro
- Messaggi: 95
- Iscritto il: 21/06/2012, 10:59
- Specialità: Teorico nullafacente
- Località: Novunque
- Contatta:
Generalizzazione degli operatori di controllo *F*?
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?
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?
Re: Generalizzazione degli operatori di controllo *F*?
*facepalm*Xeryan ha scritto:Signore ha sbagliato strada, la NASA è da un'altra parte
Valta Korpiklaani! Finlandia Rulez
Nix ha scritto:Lego, tu piaccono alle rosse pescie dimezza cotte?
- Folkwine
- Membro
- Messaggi: 212
- Iscritto il: 26/07/2011, 13:45
- Specialità: Interfacce Grafiche
- Contatta:
Re: Generalizzazione degli operatori di controllo *F*?
Aggiungerei che la supercazzola con scappellamento a destra, come se fosse antani, per due.
- 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*?
WTF _DT è un account falso creato da Nix per dominare il mondo.
Re: Generalizzazione degli operatori di controllo *F*?
nono è uno conosciuto in chatTiger07 ha scritto:WTF _DT è un account falso creato da Nix per dominare il mondo.
- 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*?
No, fortunatamente non sono Nix. irc.azzurra.org@#irchell come prova.
Comunque, ancora nessuna risposta costruttiva? Possibile?
Comunque, ancora nessuna risposta costruttiva? Possibile?
- 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*?
Dubito che qualcuno abbia capito cosa intendi...
- 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*?
Ah. Se non qualcuno non ha capito qualche parte sono disposto a spiegare, basta chiedere.Tiger07 ha scritto:Dubito che qualcuno abbia capito cosa intendi...
Re: Generalizzazione degli operatori di controllo *F*?
dal primo all'ultimo carattere_DT ha scritto:Ah. Se non qualcuno non ha capito qualche parte sono disposto a spiegare, basta chiedere.Tiger07 ha scritto:Dubito che qualcuno abbia capito cosa intendi...
- 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*?
Ok, spiego ``dal primo all'ultimo carattere''.
Una continuazione è il contesto dove una espressione viene valutata. Immaginate Il contesto (la ``continuazione'') dove g(x) viene valutato (ovvero dove la valutazione continua) è
Possiamo esprimere la continuazione f({},y) come una funzione:
Il continuation passing style (CPS) non è altro che trasformare lo stile diretto dove tutte le continuazioni sono implicite ad uno stile dove tutte le continuazioni sono esplicite, quindi quell'espressione in CPS sarebbe qualcosa tipo:
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:
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:
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:
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.
Una continuazione è il contesto dove una espressione viene valutata. Immaginate
Codice: Seleziona tutto
f(g(x),y)
Codice: Seleziona tutto
f({},y)
Codice: Seleziona tutto
k = λres.f(res,y)
Codice: Seleziona tutto
f(g(x),y)
Codice: Seleziona tutto
λk.g(x,λres.f(res,y,k))
Codice: Seleziona tutto
g(x) = -x
g'cps(x, k) = k(-x)
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 è 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)))))
Re: Generalizzazione degli operatori di controllo *F*?
solo una persona può rispondergli
- 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*?
Presto, prendete il fischietto magico e chiamate Baron!
- 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*?
A me sa di troll...
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
---------------------------------------------------------
Vuoi info sul forum e Game Maker: Studio? Clicca il link sotto!
http://gmitalia.altervista.org/gmi_foru ... f=1&t=8522
- 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*?
I miei troll sono più elaborati di così. Sono genuino.Lego ha scritto:A me sa di troll...
-
- 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*?
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
PS: Su wikipedia si rispecchia un po quello che dice quindi è possibile sia davvero genuino
2-3 persone xeryan? Ottimista
PS: Su wikipedia si rispecchia un po quello che dice quindi è possibile sia davvero genuino
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
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
- 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*?
mi spiace deluderti jak, ma non conosco assolutamente l'argomento.
Schiva 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é?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- 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*?
Dovrò andare alla cieca quindi. Peccato.
Jak, se ti serve chiedi pure.
Jak, se ti serve chiedi pure.
- Folkwine
- Membro
- Messaggi: 212
- Iscritto il: 26/07/2011, 13:45
- Specialità: Interfacce Grafiche
- Contatta:
Re: Generalizzazione degli operatori di controllo *F*?
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ù.
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ù.
Chi c’è in linea
Visitano il forum: Nessuno e 27 ospiti