Pages: [1] 2   Go Down
Print
Author Topic: regole non capite su FJ e Pi-calcolo!  (Read 4134 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
rox
Forumista
***
Offline Offline

Posts: 633


« on: 14-09-2014, 21:55:44 »

Salve a tutti,
qualcuno saprebbe spiegarmi queste regole nel dettaglio ?


Link Immagine

Link Immagine

Link Immagine

Io purtroppo a lezione mi sono perso quando il prof le spiegava e adesso ho qualche dubbio...  testate testate
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #1 on: 15-09-2014, 08:36:34 »

Una cosa per volta!

Inizia con la prima regola che non capisci.
Poi eventualmente andiamo avanti.

FB
Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #2 on: 15-09-2014, 15:37:58 »

per prima la regola T-var. Ci indica come si assegna un tipo a una variabile? In particolare non capisco cosa sia la Gamma maiuscolo... una notazione simile l'abbiamo usata per le basi... è questo il caso? ... purtroppo con i simboli spesso trovo difficoltà se non seguite da una spiegazione...  testate

la regola T-Field ci dice invece che:
supponendo di avere un e0 che appartiene all'istanza della classe C, utilizzando il metodo fields, otteniamo tutti i tipi di tutte le variabili d'istanza di C0? giusto?
« Last Edit: 15-09-2014, 15:45:31 by rox » Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #3 on: 15-09-2014, 17:33:40 »

Quote
per prima la regola T-var. Ci indica come si assegna un tipo a una variabile? In particolare non capisco cosa sia la Gamma maiuscolo... una notazione simile l'abbiamo usata per le basi... è questo il caso?

E' questo il caso.
Il Gamma e' una base.

Quote
la regola T-Field ci dice invece che:
supponendo di avere un e0 che appartiene all'istanza della classe C, utilizzando il metodo fields, otteniamo tutti i tipi di tutte le variabili d'istanza di C0? giusto?

Le regole, viste come procedimento per calcolare se un'espressione ha un tipo e quale sia questo tipo,
conviene leggerle dal basso in alto.
Questa regola ci dice che se vogliamo trovare il tipo (il nome della classe) di una espressione che e'
un field selection, allora dobbiamo per prima cosa trovare la classe a cui appartiene l'oggetto e_0.
Se e_0 e' tipabile ed ha tipo C_0 allora dobbiamo andare a vedere quali sono i nomi dei fields che appartengono
agli oggetti di tipo C_0. Se tra i field della classe c'e' f_i e se f_i e' un campo di tipo C_i, allora possiamo
dire che e_0.f_i e' tipabile ed ha tipo (classe) C_i.

FB
Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #4 on: 15-09-2014, 22:33:41 »

quindi a questo punto la T-INVK ci dice come trovare il tipo di un oggetto e0 che richiama un metodo appartenente a C?
 
In particolare dovrebbe dire questo se ho capito bene:

per prima cosa dobbiamo trovare il tipo di e(segnato), poi se C è un sottotipo di D, allora il tipo restituito dal metodo m della classe C avrà tipo D, ovvero C (poichè C è un sottotipo di D!) e infine ci dice che e0 deve appartenere alla classe C0 (in particolare all'istanza della classe C! ). Questa spiegazione sarebbe corretta?


Per quanto riguarda la regola T-NEW invece dice la seguente:

se noi vogliamo trovare il tipo di un nuovo oggetto che ha come parametro e segnato, allora prima dobbiamo prendere il tipo di e che è presente nella classe C. In seguito se C è sottotipo di D, allora tutti i tipi dei campi di C (le variabili d'istanza di C), avranno lo stesso tipo di cosa?? (non ho capito cosa sta ad indicare D f....da testo dovrebbero indicare una sequenza di operazioni... ma quale operazione in questo caso? ... )
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #5 on: 16-09-2014, 13:01:51 »

Quote
quindi a questo punto la T-INVK ci dice come trovare il tipo di un oggetto e0 che richiama un metodo appartenente a C?

Ci dice come trovare il tipo del valore restituito dal una invocazione all'oggetto e_0 del metodo m con parametri "e segnato" (e segnato e' un vettore, sta ad indicare e_1,e_2,...,e_n

FB
Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #6 on: 16-09-2014, 13:50:12 »

ok  quindi le altre cose che ho scritto sono corrette? 
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #7 on: 16-09-2014, 13:56:38 »

ok  quindi le altre cose che ho scritto sono corrette? 

Riscrivile tenendo conto di quanto detto.

FB
Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #8 on: 16-09-2014, 14:51:10 »

ok allora la T-INV ci dice che :
per prima cosa dobbiamo considerare il tipo del vettore e segnato che è all'interno di C (quando diamo in input qualcosa a u  metodo è come se quegli argomenti facessero parte della classe, giusto? ). Poi diamo a C il sottotipo di D e quindi in questo modo il metodo m chiamato su C0 avrà come tipo D e quindi C (poichè C è un sottotipo di D). Inoltre ci dice di considerare anche il tipo di e0 che appartiene all'istanza di C (C0 dovrebbe essere un istanza di C )


per T-NEW credo resti la stessa la spiegazione ... e continuo a nn capire cosa significhi D f ... se parliamo di parametri di un metodo ha senso parlare di vettore, ma se parliamo di una classe C , cosa sta a significare C segnato ( o D segnato f segnato) ?? si usa l'ultima notazione per indicare una sequenza di operazioni applicate su coppie di sequenze... quali sarebbero le operazioni che stiamo considerando  e quali sarebbero queste coppie? ...
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #9 on: 17-09-2014, 11:48:54 »

Quote
per prima cosa dobbiamo considerare il tipo del vettore e segnato che è all'interno di C (quando diamo in input qualcosa a u  metodo è come se quegli argomenti facessero parte della classe, giusto?

Frase incomprensibile, almeno per me.

Quote
Poi diamo a C il sottotipo di D

Cosa significherebbe "dare a C il sottotipo di D"??

Quote
e continuo a nn capire cosa significhi D f

Significa che quella classe possiede dei campi dal nome f_1,f_2,... e f_n
Inoltre dentro quei campi ci sono valori (oggetti nel nostro caso semplificato di FJ)
che hanno tipo rispettivamente D_1,D_2,... e D_n.

FB
Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #10 on: 17-09-2014, 12:18:31 »

Quote
per prima cosa dobbiamo considerare il tipo del vettore e segnato che è all'interno di C (quando diamo in input qualcosa a un  metodo è come se quegli argomenti facessero parte della classe, giusto?

Frase incomprensibile, almeno per me.

e segnato non abbiamo detto che è l'array che diamo in input al metodo m? da quel che io ho capito m è un metodo di e0. e0 è un'istanza di C se non ho capito male. Intendevo dire che dentro il metodo m, probabilmente abbiamo istanziato un vettore a cui assegneremo il vettore di input. Consideriamo questo metodo come esempio:

Code:
metodo(int a)
b=a,
fai qualcosa con b.

dove per esempio b è una variabile d'istanza della classe C.
questo intendevo dire con la mia frase ...


Quote
Poi diamo a C il sottotipo di D

Cosa significherebbe "dare a C il sottotipo di D"??

intendevo dire che l'ipotesi che stiamo facendo è che C segnato sia un sottotipo di D. Se non ho capito male nelle regola dovrebbe esserci scritto questo, giusto?
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #11 on: 17-09-2014, 15:36:13 »

Provo ad aiutare il collega dato che ho qualche dubbio anch'io sulle regole sul Pi-Calcolo.

La regola T-INVK ci permette di derivare il tipo di un'espressione che è un'invocazione ad un metodo contenuto nell'oggetto e0. Tale metodo prende in input una sequenza di espressioni e_segnato (cioè e_1, e_2,..., e_n). Per stabilire il tipo dell'invocazione del metodo allora dobbiamo vedere prima qual è il tipo dell'espressione e_segnato. Se e_segnato è tipabile e il suo tipo è C dobbiamo pure verificare che C sia un sottotipo di D. Quindi mtype ci dice che il tipo del metodo m che si trova nella classe C0 è un tipo freccia ed in particolare è D_segnato -> C, ovvero il metodo prende in input degli argomenti di tipo D e restituisce un tipo C. Infine se troviamo pure che e0 sia tipabile e il suo tipo è C0, allora l'invocazione del metodo sull'oggetto e0 che prende in input una sequenza di espressioni e_segnato è tipabile e questo tipo è proprio C.

Spero che la mia intuizione sia corretta.
Logged

Diventa ciò che sei nato per essere
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #12 on: 18-09-2014, 14:08:34 »

Quote
Intendevo dire che dentro il metodo m, probabilmente abbiamo istanziato un vettore a cui assegneremo il vettore di input.

FJ e' un frammento funzionale di Java. Non c'e' assegnamento. e segnato sono gli argomenti passati alla
chiamata di metodo. Punto.

Quote
intendevo dire che l'ipotesi che stiamo facendo è che C segnato sia un sottotipo di D.

Bene. Allora dillo in quel modo, non con frasi dal significato ambiguo.

Tiueni presente che se leggiamo la regola dal basso verso l'alto, allora il senso sarebbe:
determino se C segnato e' un sottotipo di D segnato.


FB
Logged
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #13 on: 18-09-2014, 14:10:03 »

Provo ad aiutare il collega dato che ho qualche dubbio anch'io sulle regole sul Pi-Calcolo.

La regola T-INVK ci permette di derivare il tipo di un'espressione che è un'invocazione ad un metodo contenuto nell'oggetto e0. Tale metodo prende in input una sequenza di espressioni e_segnato (cioè e_1, e_2,..., e_n). Per stabilire il tipo dell'invocazione del metodo allora dobbiamo vedere prima qual è il tipo dell'espressione e_segnato. Se e_segnato è tipabile e il suo tipo è C dobbiamo pure verificare che C sia un sottotipo di D. Quindi mtype ci dice che il tipo del metodo m che si trova nella classe C0 è un tipo freccia ed in particolare è D_segnato -> C, ovvero il metodo prende in input degli argomenti di tipo D e restituisce un tipo C. Infine se troviamo pure che e0 sia tipabile e il suo tipo è C0, allora l'invocazione del metodo sull'oggetto e0 che prende in input una sequenza di espressioni e_segnato è tipabile e questo tipo è proprio C.

Spero che la mia intuizione sia corretta.

E' corretta. Ma mi auguro che non sia una semplice "intuizione"....   

Salutoni
FB

Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #14 on: 18-09-2014, 14:34:01 »

apposto !  a questo punto le altre regole dovrei riuscire a capirle, per quanto riguarda le regole sul pi-calcolo invece? cosa dicono ?  testate
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Pages: [1] 2   Go Up
Print
Jump to: