Pages: [1]   Go Down
Print
Author Topic: In Ocaml, quando una sottoclasse definisce un sottotipo?  (Read 1073 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Joe
Apprendista Forumista
**
Offline Offline

Posts: 492


« on: 20-06-2013, 12:30:38 »

Salve prof., mi sono imbattuto sulla seguente domanda d'esame:

"Dire se ed eventualmente in quali casi in OCaml una sottoclasse definisce anche un sottotipo."

E' corretta questa risposta?

"In Ocaml una sottoclasse definisce un sottotipo:

  1) quando il tipo della sottoclasse è un sottotipo del tipo della sovraclasse.

  2) quando, in presenza di metodi binari overridden, cambiamo il tipo dell'output di tali medodi,
      violando la loro proprietà di metodi invariant."

« Last Edit: 20-06-2013, 12:35:34 by Joe » Logged
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #1 on: 20-06-2013, 12:41:51 »

Prima la domanda chiede "se".
A questo occorre rispondere che in generale cio' non e' vero, fornendo eventualmente
un esempio.
Poi la tua risposta 1) e' corretta, ovviamente.
La 2) e' scorretta in generale. Occorre che le modifiche rispettino
le condizioni di covarianza e controvarianza.


FB
Logged
Joe
Apprendista Forumista
**
Offline Offline

Posts: 492


« Reply #2 on: 20-06-2013, 12:46:32 »

Prima la domanda chiede "se".
A questo occorre rispondere che in generale cio' non e' vero, fornendo eventualmente
un esempio.
Poi la tua risposta 1) e' corretta, ovviamente.
La 2) e' scorretta in generale. Occorre che le modifiche rispettino
le condizioni di covarianza e controvarianza.


FB

OK grazie.
Logged
Acicatena86
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 404


See full me now who neon


« Reply #3 on: 20-06-2013, 12:47:20 »

Professore, ma allora questa affermazione (presente nei testi) è scorretta?

"So, in case we override binary methods and their return type is the one of the self, a subclass defines a subtype, since the change is in covariant w.r.t. output. "
Logged
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #4 on: 20-06-2013, 13:41:38 »

Professore, ma allora questa affermazione (presente nei testi) è scorretta?

"So, in case we override binary methods and their return type is the one of the self, a subclass defines a subtype, since the change is in covariant w.r.t. output. "

Perche'?
In cosa confligge con quanto detto?

FB
Logged
Dario Z
Matricola
*
Offline Offline

Gender: Male
Posts: 22



« Reply #5 on: 20-06-2013, 13:59:41 »

In effetti, non dovrebbe essere possibile sovrascrivere metodi binari, visto che è necessario cambiare il tipo di input (deve essere binario sia nella sovraclasse che nella sottoclasse). L'unica possibilità è quella di usare il self, ma come abbiamo visto, usare self per vincolare l'input ci fa perdere l'equivalenza tra sottoclasse e sottotipo. Quindi perchè nell'affermazione si dice che sovrascriviamo metodi "binary", pur mantenendo la suddetta equivalenza?
Logged

"Un giorno qualcuno mi batterà, ma non sarà oggi, e non sarai tu."
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 3.072



WWW
« Reply #6 on: 20-06-2013, 15:59:36 »

In effetti, non dovrebbe essere possibile sovrascrivere metodi binari, visto che è necessario cambiare il tipo di input (deve essere binario sia nella sovraclasse che nella sottoclasse). L'unica possibilità è quella di usare il self, ma come abbiamo visto, usare self per vincolare l'input ci fa perdere l'equivalenza tra sottoclasse e sottotipo. Quindi perchè nell'affermazione si dice che sovrascriviamo metodi "binary", pur mantenendo la suddetta equivalenza?

Giusto, la frase va corretta in

So, in case we override methods whose return type is the one of the self.....

Provvedo alla correzione e ringrazio della segnalazione.

Salutoni
FB
Logged
Acicatena86
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 404


See full me now who neon


« Reply #7 on: 20-06-2013, 16:19:27 »

In effetti, non dovrebbe essere possibile sovrascrivere metodi binari, visto che è necessario cambiare il tipo di input (deve essere binario sia nella sovraclasse che nella sottoclasse). L'unica possibilità è quella di usare il self, ma come abbiamo visto, usare self per vincolare l'input ci fa perdere l'equivalenza tra sottoclasse e sottotipo. Quindi perchè nell'affermazione si dice che sovrascriviamo metodi "binary", pur mantenendo la suddetta equivalenza?

Giusto, la frase va corretta in

So, in case we override methods whose return type is the one of the self.....

Provvedo alla correzione e ringrazio della segnalazione.

Salutoni
FB

Adesso si che tutto torna,   yoh Dario Z! Smiley
Logged
Joe
Apprendista Forumista
**
Offline Offline

Posts: 492


« Reply #8 on: 20-06-2013, 17:05:43 »

Quindi, la risposta corretta alla domanda che ho postato qual'è?
Logged
Pages: [1]   Go Up
Print
Jump to: