Advertisement
m1dnight

Untitled

Nov 15th, 2013
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.05 KB | None | 0 0
  1. 19:51 <+robbe> dus pakt (+)
  2. 19:51 <+robbe> (+) :: Num a => a -> a -> a
  3. 19:53 -!- Topic for #infogroep: Welkom op #infogroep, het kanaal van de studentenkring voor computerwetenschappers op de VUB. 1ste bachelors: kijk ook eens op #igperma voor specifieke studiehulp.
  4. 19:53 -!- Topic set by Ichabod [~Arty@missioncontrol.be] [Wed Nov 6 23:30:26 2013]
  5. 19:53 [Users #infogroep]
  6. 19:53 [@angryzor ] [@K ] [@treynaer] [+klx_ ] [+sven ] [ rubdos]
  7. 19:53 [@endymion ] [@mattje ] [+Bennit ] [+Numlock ] [ bart ] [ scoeri]
  8. 19:53 [@ErgonomicRbt] [@omega ] [+BitChar ] [+peanut ] [ check ]
  9. 19:53 [@fearless ] [@pewpewpew] [+bomma ] [+reinout ] [ Interesting]
  10. 19:53 [@Ichabod ] [@rAyrton ] [+Botje- ] [+robbe ] [ m1dnight ]
  11. 19:53 [@Jaspn_GRR ] [@Spartam ] [+Ian ] [+schudder] [ m1dnight_ ]
  12. 19:53 -!- Irssi: #infogroep: Total of 32 nicks [13 ops, 0 halfops, 12 voices, 7 normal]
  13. 19:53 <+robbe> hela
  14. 19:53 < m1dnight_> damnit
  15. 19:53 <+robbe> welk stuk van mennen uitleg hebde gemist :p
  16. 19:53 -!- Irssi: Join to #infogroep was synced in 19 secs
  17. 19:53 < m1dnight_> vanaf "dus pakt"
  18. 19:53 < m1dnight_> heb ik niets meer :p
  19. 19:54 <+robbe> Your paste can be seen here: http://bpaste.net/show/150025/
  20. 19:54 < m1dnight_> ik zat hier als een koe te kijken "alle, wa doet em nu"
  21. 19:54 <+robbe> ping als ge mee zijt
  22. 19:54 < m1dnight_> ping
  23. 19:54 < check> m1dnight_: ping timeout
  24. 19:55 <+robbe> silly check
  25. 19:55 <+robbe> instance Functor [] -- Defined in `GHC.Base'
  26. 19:56 <+robbe> met andere woorden lijsten zijn functors
  27. 19:56 < m1dnight_> omdat [] een type constructor is
  28. 19:56 <+robbe> die 1 argument pakt
  29. 19:56 < m1dnight_> idd
  30. 19:57 < m1dnight_> en fmap (+42) is dus een functie die normaal alleen werkt op Int instances
  31. 19:57 <+robbe> en dus die fmap (+42) is voor lijsten exact hetzelfde
  32. 19:57 < m1dnight_> (- fmap)
  33. 19:57 <+robbe> als map
  34. 19:57 < m1dnight_> maar met fmap kan ik die dus toepassen op typeconstructors die Int aangenomen hebben
  35. 19:57 < m1dnight_> hence, de andere categorieen?
  36. 19:57 <+robbe> ge moet nie naar diene int zien
  37. 19:58 <+robbe> das collateral van het feit da ik daar 42 heb gezet
  38. 19:58 < m1dnight_> ja idd
  39. 19:58 <+robbe> als ik (+een_koe) doe gaat exact hetzelfde verhaal op
  40. 19:58 <+robbe> instance Functor Maybe -- Defined in `Data.Maybe'
  41. 19:58 <+robbe> maar uw lifted function werkt dus op alles wa een functor is
  42. 19:59 < m1dnight_> I see
  43. 19:59 < m1dnight_> ik denk dat'k het snap
  44. 19:59 <+robbe> en 't is dus de functor die bepaalt wat het wilt zeggen om een functie in zijn categorie uit te voeren
  45. 19:59 <+robbe> voor een lijst is da "pas functie toe op elk element"
  46. 19:59 < m1dnight_> aaahh!
  47. 19:59 < m1dnight_> ja :)
  48. 19:59 < m1dnight_> zo ben ik mee!
  49. 19:59 <+robbe> voor een Maybe is da "pas functie toe op de x van Just x, ofwel Nothing"
  50. 19:59 < m1dnight_> ik was verward met "map"
  51. 20:00 < m1dnight_> oke oke!
  52. 20:00 < m1dnight_> ik zen mee!
  53. 20:00 < m1dnight_> robbe: merci e! :)
  54. 20:00 <+robbe> ge mapt geen functie over een lijst
  55. 20:00 <+robbe> ge mapt een functie tussen categorieen
  56.  
  57. 20:01 < m1dnight_> holy shit
  58. 20:01 < m1dnight_> sorry :p
  59. 20:01 < m1dnight_> (kging uw uitleg opslaan :D)
  60. 20:01 <+robbe> verzet uwe rechtse knop is naar de middelste in putty
  61. 20:01 <+robbe> gij kieken
  62. 20:01 <+robbe> :)
  63. 20:01 < m1dnight_> ja idd, maar op desktop was dat nog niet gebeurd :p
  64. 20:02 <@Ichabod> ...
  65. 20:02 < check> [You suddenly realize it is unnaturally quiet.]
  66. 20:02 <+robbe> dus ge doet da nu :p
  67. 20:02 < m1dnight_> I did!
  68. 20:02 < m1dnight_> :D
  69. 20:02 <+robbe> ma dus
  70. 20:03 <+robbe> instance Functor (Either a) -- Defined in `Data.Either'
  71. 20:03 <+robbe> geef zelf is in woorden hoe da die (+42) zou werken voor Either
  72. 20:05 < m1dnight_> fmap (+42) op (Either a) is ofwel uw f toepassen op (Left a) ofwel op (Right b), en dat produceert een datatype van (Either a c) waar c dus b kan zijn
  73. 20:06 <+robbe> "waar c dus b kan zijn" ?
  74. 20:06 < m1dnight_> ah, aangezien ge met (+42) zit is dat dus sowieso een Either a Int, maar ik wil zggen dat uw fmap een arbitrair type kan produceren
  75. 20:07 < m1dnight_> ah nee, een Either a b , met (Num b)
  76. 20:07 <+robbe> en waarom restricteert ge enkel b
  77. 20:07 <+robbe> een value van type Either a b is ofwel Left a, ofwel Left b
  78. 20:08 < m1dnight_> aja indeed, ge kunt van a ook naareen ander type gaan
  79. 20:08 < m1dnight_> grrr :p
  80. 20:08 < m1dnight_> brainfuck
  81. 20:09 <+robbe> haal die "lijst-map" uit uw hoofd
  82. 20:09 <+robbe> en denk ik termen van uw functie die ge lift
  83. 20:09 <+robbe> mijn functie die op platte waarden werkt, werkt nu op Maybe a b dingen
  84. 20:10 <+robbe> als ik mijn lifted functie toepas op een Maybe a b ding, dan pas ik die ofwel toe op een Left a, ofwel op een Right b
  85. 20:10 <+robbe> als ik een Left a heb, dan is het resultaat Left (a+42)
  86. 20:10 < m1dnight_> (+42) fmappen op een (Either a) is ofwel (+42) toepassen op Left a, ofwel op Right b. Het resultaat van (+42) op (Left a) is dan een (Left (f a)), same goes for (Right b)
  87. 20:10 <+robbe> als ik een Left b heb, dan is het resultaat Right (b+42)
  88. 20:10 < m1dnight_> indeed
  89. 20:10 <+robbe> da ziet er hetzelfde uit als wa ik net zei :)
  90. 20:10 < m1dnight_> inderdaad
  91. 20:10 < m1dnight_> ik denk dat ik mee ben
  92. 20:10 < m1dnight_> nu enkel nog
  93. 20:11 < m1dnight_> het type van (Right (f b)) is dan (Either a <type dat (f b) uitspuwt>)
  94. 20:11 <+robbe> (+ 42) :: Num a => a -> a
  95. 20:12 <+robbe> aangezien da ge die functie ofwel toepast op een Left a; of een Right b, zal dus zowel a en b (van Either a b) een instance moeten zijn van Num
  96. 20:12 <+robbe> aangezien da de functie alleen maar gedefinieerd is voor waarden die een instance zijn van Num
  97. 20:12 < m1dnight_> aja oke
  98. 20:12 < m1dnight_> goe, dan ben ik mee denk ik! :)
  99. 20:13 < m1dnight_> even laten bezinken nu :D
  100. 20:13 <+robbe> fmap (+42) $ Left 12 :: (Num b, Num a) => Either a b
  101. 20:13 < m1dnight_> ahja inderdaad!
  102. 20:13 < m1dnight_> :D
  103. 20:13 < m1dnight_> was ff twijfelen over welk type het dan zou zijn voor de left als ge f toepast op right
  104. 20:13 < m1dnight_> but it makes sense
  105. 20:14 < m1dnight_> oke :)
  106. 20:14 < m1dnight_> GOE!
  107. 20:14 < m1dnight_> robbe: dikke merci!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement