История изменений
Исправление AndreyKl, (текущая версия) :
Т.е. у нас есть тип который мы хотим определить. Пусть это будет тип А. И пусть так же есть функция hello
принимающая значение типа int
и возвращающая void
.
Тогда положим для java у нас получается что то вроде
interface interfaceA {
int hello(int i);
}
class A implements interfaceA {
int hello(int i) {...}
}
Для хаскеля нужно изменить сигнатуру
hello
на что то вроде hello :: InterfaceA -> Integer -> Integer
при этом сам InterfaceA нужно видимо определить как класс типов
typeclass InterfaceA where
hello :: InterfaceA -> Integer -> Integer
тогда «наследующий» код выглядит так
instance InterfaceA A where
hello a i = undefined
В общем-то я не понимаю аргументов.
По моему аналогичная ситуация. хочешь чтобы A реализовывало InterfaceA - объявляешь его инстансом и реализуешь все функции.
Или я не о том говорю?
UPD. Правда вот тут осознаю что кто из них шаблоны, кто дженерики, для меня тёмный лес. Т.е. дженерики - это штуки из явы, которые Array<A> array ? Или имеется ввиду GenericHaskell? И кто такие шаблоны? Всегда для себя считал что шаблоны с++ это как раз то что называется Generics в ява (и в общем-то использовал их именно так, правда практики немного). А тут чёрт разберёт что вы имеете ввиду все.
Исправление AndreyKl, :
Т.е. у нас есть тип который мы хотим определить. Пусть это будет тип А. И пусть так же есть функция hello
принимающая значение типа int
и возвращающая void
.
Тогда положим для java у нас получается что то вроде
interface interfaceA {
int hello(int i);
}
class A implements interfaceA {
int hello(int i) {...}
}
Для хаскеля нужно изменить сигнатуру
hello
на что то вроде hello :: InterfaceA -> Integer -> Integer
при этом сам InterfaceA нужно видимо определить как класс типов
typeclass InterfaceA where
hello :: InterfaceA -> Integer -> Integer
тогда «наследующий» код выглядит так
instance InterfaceA A where
hello a i = undefined
В общем-то я не понимаю аргументов.
По моему аналогичная ситуация. хочешь чтобы A реализовывало InterfaceA - объявляешь его инстансом и реализуешь все функции.
Или я не о том говорю?
UPD. Правда вот тут осознаю что кто из них шаблоны, кто дженерики, для меня тёмный лес. Т.е. дженерики - это штуки из явы, которые Array<A> array ? Или имеется ввиду GenericHaskell? И кто такие шаблоны? Всегда для себя считал что шаблоны с++ это как раз то что называется Generics в ява. А тут чёрт разберёт что вы имеете ввиду все.
Исправление AndreyKl, :
Т.е. у нас есть тип который мы хотим определить. Пусть это будет тип А. И пусть так же есть функция hello
принимающая значение типа int
и возвращающая void
.
Тогда положим для java у нас получается что то вроде
interface interfaceA {
int hello(int i);
}
class A implements interfaceA {
int hello(int i) {...}
}
Для хаскеля нужно изменить сигнатуру
hello
на что то вроде hello :: InterfaceA -> Integer -> Integer
при этом сам InterfaceA нужно видимо определить как класс типов
typeclass InterfaceA where
hello :: InterfaceA -> Integer -> Integer
тогда «наследующий» код выглядит так
instance InterfaceA A where
hello a i = undefined
В общем-то я не понимаю аргументов.
По моему аналогичная ситуация. хочешь чтобы A реализовывало InterfaceA - объявляешь его инстансом и реализуешь все функции.
Или я не о том говорю?
UPD. Правда вот тут осознаю что кто из них шаблоны, кто дженерики, для меня тёмный лес. Т.е. дженерики - это штуки из явы, которые Array<A> array ? Или имеется ввиду GenericHaskell? И кто такие шаблоны?
Исправление AndreyKl, :
Т.е. у нас есть тип который мы хотим определить. Пусть это будет тип А. И пусть так же есть функция hello
принимающая значение типа int
и возвращающая void
.
Тогда положим для java у нас получается что то вроде
interface interfaceA {
int hello(int i);
}
class A implements interfaceA {
int hello(int i) {...}
}
Для хаскеля нужно изменить сигнатуру
hello
на что то вроде hello :: InterfaceA -> Integer -> Integer
при этом сам InterfaceA нужно видимо определить как класс типов
typeclass InterfaceA where
hello :: InterfaceA -> Integer -> Integer
тогда «наследующий» код выглядит так
instance InterfaceA A where
hello a i = undefined
В общем-то я не понимаю аргументов.
По моему аналогичная ситуация. хочешь чтобы а реализовывало interfaceA - объявляешь его инстансом и реализуешь все функции.
Или я не о том говорю?
UPD. Правда вот тут осознаю что кто из них шаблоны, кто дженерики, для меня тёмный лес. Т.е. дженерики - это штуки из явы, которые Array<A> array ? Или имеется ввиду GenericHaskell? И кто такие шаблоны?
Исходная версия AndreyKl, :
Т.е. у нас есть тип который мы хотим определить. Пусть это будет тип А. И пусть так же есть функция hello
принимающая значение типа int
и возвращающая void
.
Тогда положим для java у нас получается что то вроде
interface interfaceA {
int hello(int i);
}
class A implements interfaceA {
int hello(int i) {...}
}
Для хаскеля нужно изменить сигнатуру
hello
на что то вроде hello :: InterfaceA -> Integer -> Integer
при этом сам InterfaceA нужно видимо определить как класс типов
typeclass InterfaceA where
hello :: InterfaceA -> Integer -> Integer
тогда «наследующий» код выглядит так
instance InterfaceA A where
hello a i = undefined
В общем-то я не понимаю аргументов.
По моему аналогичная ситуация. хочешь чтобы а реализовывало interfaceA - объявляешь его инстансом и реализуешь все функции.
Или я не о том говорю?