--
Det här meddelandet skickas till dig eftersom du prenumererar på gruppen scala-sverige i Google Groups.
Om du vill göra ett inlägg i den här gruppen skickar du e-post till scala-...@googlegroups.com.
Om du vill sluta prenumerera på den här gruppen skickar du e-post till scala-sverig...@googlegroups.com.
För fler alternativ, besök gruppen på http://groups.google.com/group/scala-sverige?hl=sv.
--
--
--
Jätteintressant!
Mats
On Jun 17, 2010 9:35 PM, "Olle Kullberg" <olle.k...@gmail.com> wrote:
Hej
Det finns en fråga som jag skulle vilja ta upp på mötet: Jag är lite nyfiken på hur ni ser på case-klassernas svaga inkapsling, och vidare diskutera om inkapsling är ett hinder för en fusion mellan OOP och FP. Tar kanske 5 min.
/mvh Olle
2010/6/17 Enno Runne <en...@runne.net>
>
> Hej Scala Sverige,
>
> Då har jag räknad 17 anmälda till träffen. Lokalen är inte särskilt stor...
--
Det här meddelandet skickas till dig eftersom du prenumererar på gruppen scala-sverige i Googl...
http://www.artima.com/forums/flat.jsp?forum=106&thread=166742
Med vänlig hälsning
/Viktor
2010/6/17 Olle Kullberg <olle.k...@gmail.com>:
En fråga jag skulle vilja ha ett enkelt och glasklart svar på :o) är:
Näe ska man använda OO och när ska man använda FP?
Framförallt i samband med DDD.
/Hasse
2010/6/18 Viktor Hedefalk <hede...@gmail.com>:
--
Hans Brattberg
hans.br...@crisp.se
www.crisp.se/hans.brattberg
+46 (0)70 575 31 32
"Inom programmering syftar ordet funktionellt p� spr�k i vilka kod
tolkas p� samma s�tt som matematiska begrepp. Funktionella spr�k
underl�ttar hantering av flera tr�dar i program."
"Scala �r dynamiskt typat [...]"
Hmm.
Enno Runne skrev:"Inom programmering syftar ordet funktionellt på språk i vilka kod tolkas på samma sätt som matematiska begrepp. Funktionella språk underlättar hantering av flera trådar i program."
PS: Håll utkik efter Scala artikeln i morgondagens Computer Sweden.
"Scala är dynamiskt typat [...]"
Hmm.
--
Det här meddelandet skickas till dig eftersom du prenumererar på gruppen scala-sverige i Google Groups.
Om du vill göra ett inlägg i den här gruppen skickar du e-post till scala-...@googlegroups.com.
Om du vill sluta prenumerera på den här gruppen skickar du e-post till scala-sverig...@googlegroups.com.
För fler alternativ, besök gruppen på http://groups.google.com/group/scala-sverige?hl=sv.
Inget av detta st�r som citat av dig, utan i journalistens egen text.
Jag tyckte att det var mycket sagt att p�st� att funktionell kod tolkas
"p� samma s�tt som matematiska begrepp", men det kanske �r h�rklyverier.
Tycker iofs att beskrivningen av FP är rätt okej? Även om beskrivning
förutsätter "ren" FP. Matematisk funktion som i referensiell
transparens alltså? Vilket såklart inte är enforcat av Scala, men
ändå.
/Viktor
2010/6/18 Peter Lewerin <peter....@swipnet.se>:
> Enno Runne skrev:
>>
>> PS: Håll utkik efter Scala artikeln i morgondagens Computer Sweden.
>
> "Inom programmering syftar ordet funktionellt på språk i vilka kod tolkas på
> samma sätt som matematiska begrepp. Funktionella språk underlättar
> hantering av flera trådar i program."
>
> "Scala är dynamiskt typat [...]"
>
> Hmm.
>
Jag tror inte du behöver vara orolig att nån ska tro att du har sagt
att Scala är ett dynamiskt typat språk ;) Computer Sweden är bara vår
allas älskade Hänt i veckan-tabloid. Det är jämt sådär.
/Viktor
2010/6/18 Jonas Bonér <jbo...@gmail.com>:
Jag skulle nog beh�va fundera en stund f�r att f� ihop en kort faktaruta
som f�rklarar FP p� ett bra s�tt, men CS lyckades hsh inte s� bra.
Det gör ont, det gör ont...
Tycker iofs att beskrivningen av FP är rätt okej? Även om beskrivning
förutsätter "ren" FP. Matematisk funktion som i referensiell
transparens alltså? Vilket såklart inte är enforcat av Scala, men
ändå.
Tidningens förklaring blir vettig om man vet vad FP är, men om man inte vet det är den alldeles för vag (vad betyder det att "[koden] tolkas på samma sätt som matematiska begrepp"?), alldeles för generell (även imperativa språk kan isf sägas tolkas på samma sätt som matematiska begrepp) och alldeles för stark (FP-funktioner *är* inte matematiska funktioner, lika lite som OOP-objekt är verkliga objekt).
Jag skulle nog behöva fundera en stund för att få ihop en kort faktaruta som förklarar FP på ett bra sätt, men CS lyckades hsh inte så bra.
--Det här meddelandet skickas till dig eftersom du prenumererar på gruppen scala-sverige i Google Groups.
Om du vill göra ett inlägg i den här gruppen skickar du e-post till scala-...@googlegroups.com.
Om du vill sluta prenumerera på den här gruppen skickar du e-post till scala-sverig...@googlegroups.com.
För fler alternativ, besök gruppen på http://groups.google.com/group/scala-sverige?hl=sv.
Jonas, den tycks bara finnas i pappersversionen, hittar den inte heller online.
Jag tror inte du behöver vara orolig att nån ska tro att du har sagt
att Scala är ett dynamiskt typat språk ;) Computer Sweden är bara vår
allas älskade Hänt i veckan-tabloid. Det är jämt sådär.
Jag tycker dock att liknelsen med matematiska funktioner kan vara
ganska kraftfull för att förklara "ren" FP. När jag hjälpt studenter
med SML på Uppsala universitet fann jag att den verkligen hjälpte
framförallt studenter som redan sysslat en del med imperativ
programmering att förstå skillnaden och poängen med referentiell
transparens: http://en.wikipedia.org/wiki/Referential_transparency_%28computer_science%29
Jag kunde bara säga "tänk matematisk funktion, glöm din C"
tillräckligt många gånger och till slut kom det ett "AHA!!". Ofta kom
det ganska direkt en våg av insikter om sen evaluering osv. och de som
kunde nåt om trådar förstod ofta direkt hur referential transparancy
gjorde det mycket enklare att tråda beräkningar. Jag tror det är lite
så med FP, man fattar ingenting skitlänge och sen får man en
aha-upplevelse och allt blir glasklart.
Jag menar inte att faktarutan på CS-artikeln är perfekt dock ;)
/Viktor
2010/6/18 Peter Lewerin <peter....@swipnet.se>:
> Viktor Hedefalk skrev:
>>
>> Det gör ont, det gör ont...
>>
>> Tycker iofs att beskrivningen av FP är rätt okej? Även om beskrivning
>> förutsätter "ren" FP. Matematisk funktion som i referensiell
>> transparens alltså? Vilket såklart inte är enforcat av Scala, men
>> ändå.
>>
>
> Tidningens förklaring blir vettig om man vet vad FP är, men om man inte vet
> det är den alldeles för vag (vad betyder det att "[koden] tolkas på samma
> sätt som matematiska begrepp"?), alldeles för generell (även imperativa
> språk kan isf sägas tolkas på samma sätt som matematiska begrepp) och
> alldeles för stark (FP-funktioner *är* inte matematiska funktioner, lika
> lite som OOP-objekt är verkliga objekt).
>
> Jag skulle nog behöva fundera en stund för att få ihop en kort faktaruta som
> förklarar FP på ett bra sätt, men CS lyckades hsh inte så bra.
Object-oriented pattern matching
http://biblion.epfl.ch/EPFL/theses/2007/3899/EPFL_TH3899.pdf
Med vänlig hälsning,
Christoffer Sawicki
2010/6/18 Viktor Hedefalk <hede...@gmail.com>:
> Jag tycker dock att liknelsen med matematiska funktioner kan vara
> ganska kraftfull f�r att f�rklara "ren" FP.
Visst �r den, det �r bara jag som �r �verdrivet petig. D�rmed inte sagt
att jag har fel, f�r det har jag inte :)
Det �r ocks� intressant att notera att m�nga FP-k�nnare �r tydliga med
att p�peka att Scala *inte* �r FP, fast det h�r v�l iofs n�stan till
genren.
Här är den online:
http://computersweden.idg.se/2.2683/1.328072
/Jörgen
/Jörgen
--
Det här meddelandet skickas till dig eftersom du prenumererar på gruppen scala-sverige i Google Groups.
Om du vill göra ett inlägg i den här gruppen skickar du e-post till scala-...@googlegroups.com.
Om du vill sluta prenumerera på den här gruppen skickar du e-post till scala-sverig...@googlegroups.com.
För fler alternativ, besök gruppen på http://groups.google.com/group/scala-sverige?hl=sv.
Om du vill gömma konstruktorargumenten så bör du inte heller använda
`case class`:er. Det stämmer att de saknar inkapsling, men det är inte
alltid man behöver det. Som Burak skriver så är de bara syntaktiskt
socker och vill du gömma något argument men ändå mönstermatcha så kan
du implementera din egen `unapply`. Exempel:
class Person(private val name: String, val age: Int)
object Person { def unapply(p: Person) = Some(p.age) }
scala> val o = new Person("olle", 123)
o: Person = Person@7e5284e9
scala> o match { case Person(n) if n > 18 => true; case _ => false }
res0: Boolean = true
Detta sagt, det känns lite konstigt att `private val` godkänns med
`case class` av kompilatorn.
Med vänlig hälsning,
Christoffer Sawicki
2010/6/18 Olle Kullberg <olle.k...@gmail.com>:
Såhär här har jag förstått det:
Om du vill gömma konstruktorargumenten så bör du inte heller använda
`case class`:er. Det stämmer att de saknar inkapsling, men det är inte
alltid man behöver det. Som Burak skriver så är de bara syntaktiskt
socker och vill du gömma något argument men ändå mönstermatcha så kan
du implementera din egen `unapply`. Exempel:
class Person(private val name: String, val age: Int)
object Person { def unapply(p: Person) = Some(p.age) }
scala> val o = new Person("olle", 123)
o: Person = Person@7e5284e9
scala> o match { case Person(n) if n > 18 => true; case _ => false }
res0: Boolean = true
Detta sagt, det känns lite konstigt att `private val` godkänns med
`case class` av kompilatorn.
Jag brukade tycka att inkapsling var superviktigt, jag tycker inte att det är lika viktigt längre. Jag tror att en anledning är att immutabilitet löser en del problem jag tidigare använde inkapsling för att lösa. Jag tror att en annan anledning är att jag tenderar att skriva kortare klasser nu (men fler) och där varje klass har en mycket större andel publikt API än vad mina äldre, större klasser hade. Jag tror att jag segmenterar koden på en annan ledd nu.
Har inte inkapsling fått lite orättvist mycket fokus i OO? (Jag säger inte att det är meningslöst och dåligt bara att det kanske fått mer uppmärksamhet än det förtjänar, kanske främst för att c++, java och c# kräver att man deklarerar och döljer sina fält).
När jag kodar i scala skriver jag ganska sällan private. Antagligen för att man får inkapslade fält på köpet och för att det faller sig så naturligt att hålla mängden mutabilitet nere och för att det är så väldigt enkelt att bryta upp sina klasser i flera i scala.
Någon annan som börjat slappna av lite med inkapslingen eller tycker listan att jag borde gå hem och smiska upp mig själv tills jag kommer upp på banan igen?