00:02:28 <kmc> <bbear> Does haskell is long to learn ?
00:09:00 -!- oerjan has quit (Quit: Lost terminal).
00:10:20 * kallisti should retry Project Euler now that the first page of problems looks fairly simple.
00:10:37 <kallisti> last time I tried PE I only knew Python and a little C.
00:11:38 <kallisti> I'd likely use LogicT for many of these.
00:11:53 <kallisti> "Which prime, below one-million, can be written as the sum of the most consecutive primes?"
00:11:57 <kallisti> is a prime candidate for some LogicT
00:12:36 <kmc> i don't think you need (or benefit from) a nontrivial pattern of backtracking
00:12:43 <kmc> it sounds like a straightforward map-reduce to me
00:13:10 <kmc> in fact PE might be a fun way to learn some mapreduce framework
00:14:46 <kmc> kallisti, i also like http://hackage.haskell.org/package/tree-monad and http://hackage.haskell.org/package/parallel-tree-search
00:18:11 <kallisti> > sum . map (join (^)) $ [1..1000]
00:18:12 <lambdabot> 100036819914469517709537501122764679556779368062293465458376098810023491074...
00:19:54 <lambdabot> [1,4,27,256,3125,46656,823543,16777216,387420489,10000000000,285311670611,8...
00:20:05 <kallisti> > digits = show . sum . map (join (^)) $ [1..1000] in drop (length digits - 10) digits
00:20:06 <lambdabot> <no location info>: parse error on input `='
00:20:09 <kallisti> > let digits = show . sum . map (join (^)) $ [1..1000] in drop (length digits - 10) digits
00:20:22 <kallisti> problem 48 is considerably easier than 50. :P
00:21:59 -!- azaq23 has joined.
00:27:24 -!- pikhq_ has joined.
00:28:11 <kallisti> oh I could have also used modulo.
00:29:15 -!- pikhq has quit (Read error: Operation timed out).
00:37:44 -!- nooga has joined.
00:47:17 <kallisti> > (`mod` 3) <+> (`mod` 5) $ 15
00:47:18 <lambdabot> It could refer to either `Control.Arrow.<+>', i...
00:47:24 <kallisti> > (`mod` 3) Control.Arrow.<+> (`mod` 5) $ 15
00:47:24 <lambdabot> No instance for (Control.Arrow.ArrowPlus (->))
00:55:17 -!- nooga has quit (Ping timeout: 252 seconds).
01:02:32 <kallisti> @pl (\x -> all (==0) $ map (mod x) [2..20])
01:02:32 <lambdabot> all (0 ==) . flip map [2..20] . mod
01:17:37 -!- Phantom___Hoover has quit (Read error: Connection reset by peer).
01:19:53 -!- pikhq has joined.
01:20:00 -!- pikhq_ has quit (Ping timeout: 244 seconds).
01:34:54 -!- calamari has joined.
01:47:53 -!- pikhq_ has joined.
01:49:58 -!- pikhq has quit (Ping timeout: 244 seconds).
01:51:12 <lambdabot> Data.Char digitToInt :: Char -> Int
01:58:35 <lambdabot> Prelude scanl :: (a -> b -> a) -> a -> [b] -> [a]
01:58:36 <lambdabot> Data.List scanl :: (a -> b -> a) -> a -> [b] -> [a]
01:58:36 <lambdabot> Prelude scanl1 :: (a -> a -> a) -> [a] -> [a]
02:06:57 -!- Vorpal has quit (Ping timeout: 272 seconds).
02:40:29 <Sgeo> Hmm, testing precedence of ^:?
02:40:53 <Sgeo> > foobar 100000000
02:41:09 <Sgeo> > foobar 1000000000000000
02:41:17 <Sgeo> > foobar 1000000000000000 :: CReal
02:41:56 <Sgeo> How does :: associate?
02:45:15 -!- derdon_ has quit (Remote host closed the connection).
02:54:38 -!- pikhq has joined.
02:54:38 -!- pikhq_ has quit (Ping timeout: 240 seconds).
02:54:59 -!- itidus20 has left ("Leaving").
02:57:22 -!- augur has joined.
02:58:19 -!- TeruFSX has quit (Read error: Connection reset by peer).
02:59:20 -!- TeruFSX has joined.
02:59:31 -!- augur has quit (Read error: Connection reset by peer).
03:04:31 -!- Madoka-Kaname has quit (Ping timeout: 260 seconds).
03:10:12 -!- augur has joined.
03:10:34 -!- augur has quit (Remote host closed the connection).
03:11:12 -!- Madoka-Kaname has joined.
03:20:44 <zzo38> I am still working on MML->S3M program in Haskell.
03:22:32 -!- augur has joined.
03:23:41 -!- pikhq_ has joined.
03:24:51 -!- pikhq has quit (Ping timeout: 245 seconds).
03:25:14 <zzo38> The monad laws imply the left zero law (mzero >> x = mzero), but do the applicative laws imply the left zero law (empty *> x = empty)?
03:25:56 <zzo38> (Actually, the monad laws don't imply the left zero law by themselves; the laws of the type system are also needed.)
03:27:49 -!- augur has quit (Ping timeout: 276 seconds).
03:29:06 <kallisti> I'm getting an out of bounds array element error
03:32:03 <kallisti> ah I accidentally deleted a line of my array or something
03:32:16 <kallisti> http://projecteuler.net/problem=11 working on this
03:36:52 <lambdabot> Data.Ix inRange :: Ix a => (a, a) -> a -> Bool
03:45:55 <zzo38> I think the applicative laws do not imply the left zero law, because they fail to imply the right zero law and applicatives can be turned backward
03:59:45 -!- azaq23 has quit (Quit: Leaving.).
04:00:34 <kallisti> import Math.NumberTheory.Primes.Factorisation
04:00:34 <kallisti> problem12 = head . filter ((>500) . size . divisors) . scanl1 (+) $ [1..]
04:00:38 <kallisti> I'm cheating so hard, guys....
04:03:47 -!- augur has joined.
04:16:12 <lambdabot> Data.Ord comparing :: Ord a => (b -> a) -> b -> b -> Ordering
04:40:57 -!- augur has quit (Remote host closed the connection).
04:45:59 -!- Klisz has quit (Read error: Connection reset by peer).
05:21:46 <kallisti> wow 5 people have solved an average of 22% of Project Euler using Frink.
05:22:05 <kallisti> those are the only 5 people using Frink for any problem.
05:22:52 <monqy> have they solved all of those problems using frink or did they just list themselves as "yes frink is the language i use" in which case they could have used other languages for some of them??
05:26:05 <kallisti> because project euler doesn't actually get any source code from you
05:26:25 <kallisti> for example the pythagorean triplet problem near the beginning of the list can simply be done on paper.
05:29:43 <kallisti> I'm cheating so bad with anything involving prime numbers or factorization
05:29:59 <kallisti> using Data.Numbers.Primes and Math.NumberTheory.Primes.Factorisation
05:41:34 <zzo38> "These are the voyages of the starship, Enter-prize. Its ongoing mission, to exploit poor families, to seek out new lists and subscriptions, to boldly promote contests that no one has won before." From gopher.std.com port 70, selector string: 0/The Online Book Initiative/Star.Trek.Parodies/p.050.Z
06:04:54 <Madoka-Kaname> If you view Project Euler as a math challenge site, sure.
06:05:00 <Madoka-Kaname> If you view it as a programming challenge site? Nah
06:06:43 <kallisti> I view it as cheating for both
06:06:59 <pikhq_> I don't view Euler as much of a programming challenge site, at all.
06:07:00 <kallisti> because I've removed the programming challenge. which, in this case, is to efficiently compute prime numbers or divisors.
06:07:36 <pikhq_> Much more about algorithms. Which is a necessary skill *for* programming, sure, but is quite a bit more mathy.
06:08:18 <kallisti> http://projecteuler.net/problem=15 this one will be fun.
06:08:58 <kallisti> again, pretty sure I want LogicT for that one. :>
06:09:54 <pikhq_> Hmm. "Backtracking" there must mean "without getting further from the goal".
06:09:58 <kallisti> I'm kind of using Project Euler as a test of how proficient I am at Haskell, no such much math or algorithms in general.
06:10:59 <kallisti> actually I bet you can solve this one with plain old combinatorics
06:12:29 <pikhq_> I suspect it's just (n-1)!, where n is the Manhattan distance.
06:28:07 <kallisti> hmmm but manhattan distance seems to involve diagonals as well
06:36:44 * Sgeo thinks there has to be a better alternative to foldr and foldl
06:36:50 <Sgeo> erm, foldr and foldl'
06:37:02 <Sgeo> Neither of them seem suitable for ...
06:37:39 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
06:37:40 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool
06:38:45 <kallisti> Sgeo: what are you talking about. :P
06:38:59 <Sgeo> > and [x, y, z]
06:39:00 <lambdabot> It could refer to either `L.x', defined at <local...
06:39:16 <lambdabot> It could refer to either `L.x', defined at <local...
06:39:26 <lambdabot> Couldn't match expected type `GHC.Bool.Bool'
06:39:55 <Sgeo> What's the thing to make a list of the ..
06:40:03 <Sgeo> @hoogle Int -> a -> [a]
06:40:03 <lambdabot> Prelude replicate :: Int -> a -> [a]
06:40:04 <lambdabot> Data.List replicate :: Int -> a -> [a]
06:40:33 <Sgeo> > or (replicate 1000000000 False) ++ [True]
06:40:34 <lambdabot> Couldn't match expected type `GHC.Bool.Bool'
06:40:40 <Sgeo> > or (replicate 1000000000 False ++ [True])
06:40:53 <kallisti> Sgeo: what are you trying to do.
06:41:02 <Sgeo> Get or or and to stack overflow
06:41:07 <Sgeo> Due to the use of foldr
06:42:26 <Sgeo> > foldr f z [a, b, c]
06:42:35 <Sgeo> Hmm, why wouldn't it?
06:42:58 <kallisti> because it doesn't exhaust the stack.
06:43:22 <kallisti> it doesn't appear that it will.
06:43:36 <Sgeo> When will the || itself get evaluated?
06:44:02 <Sgeo> If the left is False, it needs the right. But does it still store the left and the fact that it's evaluating ||?
06:44:06 <Sgeo> I guess it might not?
06:44:17 <kallisti> the "call stack" in Haskell is actually a stack of case expressions.
06:44:27 <Sgeo> kmc, you there?
06:45:51 <kallisti> > all isJust $ repeat (Just 5)
06:46:13 <kallisti> > all isJust $ replicate 5000000000 (Just 5)
06:46:45 <kallisti> I think in this case the pattern matching doesn't cause the stack to fill up.
06:49:09 <kallisti> A function strict* in its second argument will always require linear stack space with foldr, so foldl' should be used instead in that case. If the function is lazy/non-strict in its second argument we should use foldr to 1) support infinite lists and 2) to allow a streaming use of the input list where only part of it needs to be in memory at a time.
06:49:36 <kallisti> so yes it doesn't actually blow up the stack.
06:53:12 <kallisti> because || is lazy in its second argument, it doesn't have to strictly evaluate the rest list to return the result of the first call, and so on...
06:53:56 <kallisti> here, in order to evaluate the first +, it has to evaluate all the others, which creates a stack.
06:54:43 -!- pikhq has joined.
06:54:51 -!- pikhq_ has quit (Ping timeout: 245 seconds).
06:56:08 <kallisti> the evaluation of the first || doesn't force the rest of the expression
06:56:39 <kallisti> subsequently, the second || doesn't force (c || d), etc
06:58:29 -!- NihilistDandy has joined.
06:59:11 <Sgeo> kallisti, that wasn't the bit that was confusing me
06:59:17 <Sgeo> I get it now though. I did ask about it in #haskell
07:00:46 <kallisti> oh you were confused about the strictness of boolean operators?
07:05:42 <Sgeo> kallisti, I was confused about that the operator did not need to stick around if all it was doing was returning the second argument
07:10:36 <kallisti> yes returning the argument does not force.
07:11:08 <kallisti> I would think about it less in terms of a "function call stack" and more about a pattern matching stack
07:27:03 -!- augur has joined.
07:29:13 -!- NihilistDandy has quit (Quit: Textual IRC Client: http://www.textualapp.com/).
07:31:23 -!- NihilistDandy has joined.
07:31:23 -!- NihilistDandy has quit (Client Quit).
07:36:12 -!- NihilistDandy has joined.
07:36:17 -!- nooga has joined.
07:42:20 -!- NihilistDandy has quit (Quit: Textual IRC Client: http://www.textualapp.com/).
07:44:56 -!- NihilistDandy has joined.
07:48:50 -!- NihilistDandy has quit (Client Quit).
08:31:24 -!- zzo38 has quit (Remote host closed the connection).
08:45:38 -!- sebbu2 has joined.
08:45:38 -!- sebbu2 has quit (Changing host).
08:45:38 -!- sebbu2 has joined.
08:49:34 -!- sebbu has quit (Ping timeout: 276 seconds).
08:58:26 -!- Madoka-Kaname has quit (Read error: Operation timed out).
08:58:51 -!- Madoka-Kaname has joined.
09:00:53 -!- calamari has quit (Quit: Leaving).
09:15:35 -!- pikhq_ has joined.
09:15:51 -!- pikhq has quit (Ping timeout: 244 seconds).
09:17:58 -!- Ngevd has joined.
09:34:04 -!- Ngevd has quit (Read error: Connection reset by peer).
09:34:16 -!- Ngevd has joined.
09:34:49 -!- Ngevd has quit (Read error: Connection reset by peer).
09:35:36 -!- Ngevd has joined.
10:00:04 -!- Ngevd has quit (Quit: Goodbye).
10:29:39 -!- Phantom_Hoover has joined.
11:13:35 -!- monqy has quit (Quit: hello).
11:20:00 -!- derdon has joined.
11:32:48 <fizzie> http://robotfindskitten.org/aw.cgi?main=news.rfk "While I was on my own lengthy personal journey of kitten finding, no less than 8 new ports have been submitted." <-- Oo, I'm one of those.
11:33:44 <fizzie> Also it's been... about two years, three months since I emailed about rfk86; that's one lengthy journey.
12:09:35 -!- sebbu2 has changed nick to sebbu.
12:21:25 -!- nooga has quit (Ping timeout: 252 seconds).
12:29:26 -!- oerjan has joined.
12:38:15 <oerjan> > length . show $ 1000^1000
12:41:39 <fizzie> > let bestaddever a b = (+ (-1)) . length . show $ (10^a)*(10^b) in bestaddever 1234 567
12:51:04 <Phantom_Hoover> <fizzie> Also it's been... about two years, three months since I emailed about rfk86; that's one lengthy journey.
13:01:05 * oerjan wonders why the heck wordpress sometimes fluctuates between making links https and not
13:47:52 -!- clog has quit (Ping timeout: 252 seconds).
14:01:38 <fizzie> > let bestmulever a b = (+ (-1)) . length . show $ (10^a)^b in bestmulever 12 345
14:01:46 <fizzie> Just for completeness, you see.
14:02:41 <oerjan> right. now we just need bestpowever.
14:09:16 <oerjan> kallisti: this might be useful for your cheating http://www.haskell.org/pipermail/haskell-cafe/2012-January/098929.html
14:09:45 <kallisti> nah I've already got plenty of libraries for that.
14:10:05 <kallisti> really I just wanted something for prime numbers because I was too lazy to efficiently compute primes but still wanted to continue with the rest of the problems in order.
14:10:19 <oerjan> that wren person seems to be announcing a lot of packages today
14:11:24 <kallisti> I wonder if that wheel sievee is faster than the wheel sieve used in Data.Numbers.Primes
14:11:44 <kallisti> the one in Math.NumberTheory.Primes is slower. the docs mention that the author wants to eventually switch to a sieve of Atkin
14:11:48 <oerjan> (my attempts at googling previously indicated it's a mostly female name)
14:13:30 * kallisti should write an assembly program of some kind.
14:14:30 <kallisti> hm Project Euler would actually be a good way to learn some assembly
14:14:42 <oerjan> sounds rite-of-passage-ish
14:15:15 <kallisti> I could try something I know is probably going to be near impossible given my experience at assembly (none)
14:15:23 <kallisti> like a lambda calculus evaluator. :P
14:15:49 <shachaf> You should write a threading library.
14:16:16 <kallisti> oerjan: er, strict composition?
14:16:33 <oerjan> was mentioned in another of wren's announcements
14:17:49 <oerjan> http://www.haskell.org/pipermail/haskell-cafe/2012-January/098932.html
14:19:48 <oerjan> mezzacotta seems to be dead today
14:22:17 <fizzie> > let bestpowever a b = length . tail . show $ foldl (^) 10 (a <$ (tail . show) (10^b)) in bestpowever 9 3
14:22:57 <fizzie> I call it "the tail-show-power-of-ten paradigm".
14:35:23 <oerjan> hm http://www.irregularwebcomic.net/ is also down
14:36:16 * oerjan adds http://www.darthsanddroids.net/ for good measure
14:36:37 <oerjan> i thought they didn't all have the same host
14:36:43 <fizzie> I think there might be a pattern here.
14:37:15 <oerjan> sure, they're all DMM sites, but i distinctly recall some of them have been up at times when others weren't
14:37:51 <fizzie> Perhaps they have been synergized.
14:37:54 <oerjan> maybe ... dmm made a sunday annotation which he shouldn't have.
14:38:04 <oerjan> and now he will never be heard from again.
14:38:06 -!- clog has joined.
14:39:30 <oerjan> (normally i just go to mezzacotta and click on to the rest from there)
14:43:13 <fizzie> "Update Jan 29th, 6:20am PST: Our admins have identified the problem and are executing a fix across the affected servers. We’ll continue updating this post with more information as soon as we’re able. – JJ G" http://www.dreamhoststatus.com/
14:43:51 <fizzie> I'm guessing that, since the canonical name of the IP those domains point at is apache2-dap.vilnius.dreamhost.com.
14:46:10 -!- Frooxius_ has joined.
14:47:06 * oerjan wonders if that "vilnius" part is globally true
14:47:09 <oerjan> i get it from here too, though
14:49:00 -!- oerjan has quit (Quit: Lost terminal).
14:49:53 -!- Frooxius has quit (Ping timeout: 245 seconds).
14:50:07 -!- Frooxius_ has changed nick to Frooxius.
14:54:45 -!- azaq23 has joined.
16:04:52 -!- pikhq has joined.
16:05:05 -!- pikhq_ has quit (Ping timeout: 252 seconds).
16:07:18 -!- zzo38 has joined.
16:10:56 -!- Phantom_Hoover has quit (Remote host closed the connection).
16:12:03 -!- Phantom_Hoover has joined.
16:12:20 -!- derdon_ has joined.
16:15:17 -!- derdon has quit (Ping timeout: 248 seconds).
16:15:42 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
16:28:34 -!- Frooxius has joined.
16:47:19 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
16:49:49 -!- Frooxius has quit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204]).
16:59:42 -!- centrinia has quit (Remote host closed the connection).
17:02:49 -!- Phantom_Hoover has joined.
17:17:43 <zzo38> The contrapositive form of a monad m is (forall z. (x -> z) -> m z) which can join, but the form with w in it is (forall z. (x -> w z) -> m z) can they join (if w is a comonad)?
17:18:44 <zzo38> Or if you change around the position of w?
17:20:11 <zzo38> Other positions do not seem to work... I think it has to be in a contravariant position...
17:24:43 <zzo38> Maybe it does work; I think there are other contravariant positions anyways
17:40:11 <zzo38> (The first type, without the w, I found out, is the Yoneda lemma.)
17:42:29 <zzo38> (And I did realize it is a functor regardless of the type m)
17:43:36 <zzo38> newtype T f x = T { runT :: forall z. (x -> z) -> f z }; fmap f (T x) = T $ \y -> x (y . f); join x = T $ \y -> join $ (runT (runT <$> x)) ($ y);
17:45:38 <zzo38> lift x = T $ \y -> liftM y x;
18:39:14 -!- nooga has joined.
18:51:58 -!- _Slereah has quit.
18:59:05 -!- dalebob has joined.
18:59:12 -!- dalebob has left ("Leaving").
19:58:42 -!- monqy has joined.
20:08:33 -!- ais523 has joined.
20:08:58 -!- Frooxius has joined.
20:18:37 <zzo38> I do have an idea to add a kind of top level declaration in Haskell which allows all Monad to be Functor without changing any existing libraries or programs: default instance Monad m => Functor m where { fmap = liftM; }; and now write things such as lift = MaybeT . fmap Just; and so on, instead of using liftM, fmap works too, or any function based on fmap
20:21:01 -!- pkzip has joined.
20:21:28 -!- pkzip has left.
20:49:20 -!- oerjan has joined.
20:50:24 <oerjan> 14:49:23: -!- oerjan has quit (Quit: Lost terminal).
20:50:24 <oerjan> 14:49:35: <fizzie> He got... too close.
20:50:46 <oerjan> i've been having these connection drops the last couple of days :(
20:51:16 <oerjan> ironically, _after_ installing the new router the isp sent to fix a similar problem last christmas
20:51:54 <oerjan> after i called them, the problem stopped almost entirely, until now >_<
20:52:33 <oerjan> it's not _entirely_ similar though, but that may be just the new router not being completely reset like the old one was.
20:53:36 <oerjan> now most times i notice nothing _other_ than my putty session disconnecting. but that's still irritating.
20:54:55 <oerjan> (and i can reconnect again immediately)
20:56:03 <oerjan> i suppose it could be something wrong at the other end at nvg, except there was one time web went horribly flaky too (that got fixed after i unplugged the router)
20:58:13 <zzo38> Does this seem correct to you? offs = 6 + shiftR (co + 2 * (ni + cp) + 15) 4; For determining the start offset parapointer for S3M file, after the header
20:58:18 <oerjan> one subtle difference is that now unlike before christmas, nvg notices i've disconnected and terminates irssi
20:59:03 <oerjan> which i guess is an improvement.
20:59:12 <zzo38> (ni is number of instruments, cp is number of patterns, co is number of orders which is the smallest even number greater than the number of patterns)
21:03:08 <fizzie> Heh, "parapointer" is such a funny term. I suppose it's named after the 16-byte "paragraphs".
21:04:43 <zzo38> fizzie: They are sixteen bytes long
21:05:13 <ion> Is shiftR right?
21:05:18 <ion> (no pun intended)
21:05:37 <zzo38> ion: shiftR means shift right (like >> in C)
21:05:43 <ion> Yes, i know.
21:05:58 <oerjan> > readInt 36 (const True) (\x -> fromEnum x - fromEnum 'A' + 10) "GARFIELD"
21:07:07 <ion> I hate how digitToInt arbitrarily stops supporting letters at 'g'.
21:09:58 <fizzie> `run echo '36 i GARFIELD p' | dc
21:10:01 <HackEgo> dc: input base must be a number between 2 and 16 (inclusive) \ dc: 'G' (0107) unimplemented \ dc: 'R' (0122) unimplemented \ dc: stack register 'D' (0104) is empty \ 14
21:10:34 <zzo38> It doesn't work because some of the uppercase letters have other meanings in dc.
21:10:50 <zzo38> You can use all the digits 0123456789ABCDEF regardless of input base, however.
21:11:22 <zzo38> (A useful thing to know in anarchy golf)
21:13:11 <zzo38> Do you know about S3M file format?
21:13:56 <fizzie> I've read the specs at least once, though I don't quite recall for what. I don't think I've actually codewise parsed anything else than XMs.
21:14:05 <ais523> zzo38: I've heard of it, IIRC it's an extension to MIDI
21:14:15 <ais523> that also includes the soundfont you're meant to play it back with
21:14:19 <fizzie> It's one of those module formats.
21:15:05 <zzo38> ais523: Actually it isn't MIDI
21:15:51 <zzo38> fizzie: Yes it is the ScreamTracker format. I try to make a Haskell program to make output that format. But I could add the feature output other formats too.
21:16:13 <zzo38> Even right now, I have two ways of loading instruments; either a sample from a file or a synthesis specification.
21:18:58 <fizzie> XM isn't very much different, except it has quite a bit more complicated instruments (since it can have instruments consisting of multiple samples), and in general just more features.
21:20:45 <zzo38> fizzie: I know that. However, in my program, using different samples for the same instrument, as well as other features, are done in the MML compiler so the S3M does not need to do those things.
21:20:58 <fizzie> You could think of module files as to being analogous to a MIDI file with a bundled soundfont, if you don't mind any of the details.
21:21:33 <ion> [lolssdsl0lqx]sx[1+lddd*lld*-ls+dsdrll2**lo+dsld*rd*+4<kd15>q]sq[q]9ksk[d77/3*2-ss47lxx-P1+d78>0]s00[d23/.5-3*so0l0xr10P1+d24>u]dsux
21:21:54 <ion> speaking of dc
21:22:24 <zzo38> I have not seen any other program that compiles MML into S3M or into any other module music format. But the one I write, as well as S3M, might also support other output formats such as MIDI and audio out.
21:22:58 <fizzie> ion: What I like the most about dc is that the man page includes the example "KSK0k1/_1Ss [ls*]Sxd0>x [256~Ssd0<x]dsxxsx[q]Sq[Lsd0>qaPlxx] dsxxsx0sqLqsxLxLK+k" as a way to describe what "P" does.
21:23:05 <zzo38> (And that MegaZeux has the capability to play S3M files, as well as Vorbis)
21:23:24 <ion> fizzie: hehe
21:24:18 <zzo38> I do like dc for use as a desk calculator, which is what the name "dc" comes from anyways.
21:24:38 <ion> Yeah, RPN is great for interactive calculation.
21:24:55 <ion> Although orpie is nicer as it displays the stack in realtime.
21:25:07 -!- Vorpal has joined.
21:25:28 <zzo38> My MML->S3M compiler already has many features, the only thing incomplete is the actual output S3M file. It is actually a full programming language with some similarities to TeX with anonymous macros.
21:27:22 -!- jix has quit (Remote host closed the connection).
21:28:13 <zzo38> There is a "define" command, but you cannot define parameters; you can only define the input token and the output token (or list of output tokens). But anything inside of {} will expand once something else it put afterward, and ? will change to the token that is afterward, while ?? changes to ? and ??? to ?? and so on.
21:29:06 <ion> `run dc -e '[lolssdsl0lqx]sx[1+lddd*lld*-ls+dsdrll2**lo+dsld*rd*+4<kd15>q]sq[q]9ksk[d77/3*2-ss47lxx-P1+d78>0]s00[d23/.5-3*so0l0xr10P1+d24>u]dsux'
21:29:10 <HackEgo> .............................................................................. \ .............................................................................. \ .........................----------------------------......................... \ ..................---------------------,,,,,,+ (+++,,,,-----.................. \ .............---------------------,,,,,,,,+++*)' $"(*+,,,,,,-----.............
21:29:55 <Vorpal> ion, hm... what is that supposed to do?
21:30:12 <ion> You’ll recognize it if you see the rest of the output.
21:30:23 <Vorpal> I find that parsing dc is quite annoying
21:30:32 <Vorpal> ion, can't run dc atm, I'm on a mobile device
21:30:36 <oerjan> replacing \ by newline might also help, i suspect
21:30:50 <ion> http://johan.kiviniemi.name/stuff/dc/mandel.output
21:31:15 * oerjan suspects the filename says it all
21:31:19 <Vorpal> oerjan, by chance those \ happened to end up at the end of each line on my screen
21:32:30 <oerjan> right, if i resize the putty window
21:32:56 <oerjan> > cycle "0123456789" -- whistles innocently
21:32:57 <lambdabot> "01234567890123456789012345678901234567890123456789012345678901234567890123...
21:33:01 <Vorpal> oerjan, I'm using a client that tries to be smart and break at spaces, so that increases the probability for it
21:33:03 <zzo38> oerjan: I don't think so since the prefix will also be part of it
21:33:18 <oerjan> zzo38: don't think what?
21:33:25 <ais523> ^ul ((0123456789)S:^):^
21:33:25 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123 ...too much output!
21:33:32 <ais523> oerjan: fungot > lambdabot
21:33:33 <fungot> ais523: the real motivation, however, and development on it seems to be a sick bastard to use that large unused space to show the forth/ pocket c guys that lispme can do cool stuff too.
21:33:42 <zzo38> In my program, '-1<1>1 a ((0.5aH) + (0.25aV)) is a valid instrument synthesis specification (actually, not by itself, you also need length, loop point, and sample rate)
21:33:57 <ais523> (and I know you're good enough at Underload to write that)
21:33:59 <zzo38> oerjan: The IRC window, if resized, the first line still has a prefix
21:34:40 <ais523> ^bf ,>,>,>,>,>,>,>,>,>,<<<<<<<<<[.>.>.>.>.>.>.>.>.>.<<<<<<<<<]!0123456789
21:34:40 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 ...
21:35:01 <zzo38> Can ARM chips save energy compared with others? If so, how much and in what circumstances?
21:35:06 <oerjan> zzo38: but irssi lines continuation lines up with the first one
21:35:15 <Vorpal> ais523, that is hardcoded to the specific length of the input :(
21:35:28 <ais523> Vorpal: do you want me to write one that isn't?
21:35:49 <Vorpal> ais523, if you want to you can, but if you find it annoying: forget it
21:36:05 <zzo38> oerjan: OK, but you still probably have to resize the window before receiving it? Or will it redraw the screen?
21:36:09 <fizzie> I recognized it as Mandelbrotty even from the non-lining-up lines.
21:36:10 <ais523> ^bf >,[>,]<[<]>[[.>]<[<]>]!0123456789
21:36:10 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 ...
21:36:14 <Vorpal> ais523, anyway which sort of EOF does fungot use?
21:36:15 <fungot> Vorpal: but no description of the function, and a pointer variable.) now i'm wondering, what's a cataract?) could also be, for instance
21:36:18 <fizzie> Possibly because why would someone print anything else?
21:36:21 <ais523> Vorpal: that program was EOF=0
21:36:26 <ais523> and given that it worked, I guess fungot uses EOF=0
21:36:26 <fungot> ais523: not at all. ( i don't have fnord source. ;p fnord
21:36:28 <Vorpal> also that was shorter than your original program, heh
21:36:37 <oerjan> ais523: i'm not good enough to write it in the time it takes to remember cycle :P
21:36:52 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
21:36:55 <ais523> oerjan: but cycle didn't work for your purposes
21:37:23 <oerjan> ais523: that's just lambdabot's stupid brevity
21:37:37 <zzo38> (I myself use PuTTY for IRC, but it isn't irssi)
21:37:42 <ais523> which is why I said fungot > lambdabot rather than Underload > Haskell
21:38:38 <zzo38> Do you know about energy and ARM processor and stuff?
21:39:11 <ion> fizzie: “I recognized it as Mandelbrotty just from glancing at the code”
21:39:24 <oerjan> ^bf >,[>,]<[[<]>[.>]<]!0123456789
21:39:24 <fungot> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 ...
21:39:33 <ais523> ion: in non-esolangs, you can often do that
21:39:45 <oerjan> oh you already did that
21:39:56 <ais523> but your loop is less unrolled than mine
21:40:47 <fizzie> ais523: It does use EOF=0, though it's not entirely obvious from the code.
21:40:52 -!- zzo38 has quit (Remote host closed the connection).
21:41:10 <ais523> EOF=0 is best for oneliners; EOF=-1 probably best for larger programs
21:41:29 <ais523> I still prefer my mechanism with EOF=0, NUL=1, SOH=2, etc
21:42:51 <oerjan> <ais523> ion: in non-esolangs, you can often do that <-- i think dc counts as an esolang for this purpose :P
21:43:16 <ais523> yep, everyone knows dc is an esolang really
21:44:25 <oerjan> EOF=0 is worst for anything that needs to handle actual nul characters
21:47:05 <oerjan> (of course you need > 8 bit as well)
21:47:15 <ais523> oerjan: not if nul = 1
21:47:36 <oerjan> otherwise you'll not be able to represent 255
21:47:55 <ion> 9-bit bytes!
21:48:16 <oerjan> oh you were responding to another line
21:48:44 <oerjan> ion: some cpu had those
21:50:13 -!- Sgeo has quit (Ping timeout: 276 seconds).
21:50:45 -!- Sgeo has joined.
21:58:55 -!- Slereah has joined.
21:59:37 -!- jix has joined.
21:59:47 -!- yiyus has quit (Read error: Operation timed out).
22:00:18 -!- pikhq_ has joined.
22:00:19 -!- pikhq has quit (Ping timeout: 245 seconds).
22:02:57 <fizzie> If you have 36-bit words, 9-bit bytes sound reasonable.
22:03:02 -!- yiyus has joined.
22:03:13 <fizzie> Or I guess if you have 9-bit bytes, 36-bit words sound reasonable too.
22:03:27 <fizzie> Though 36-bit words and 6-bit bytes are always an option too.
22:03:52 <Vorpal> <oerjan> (of course you need > 8 bit as well) <-- you could use escape code for nul maybe?
22:04:05 <Vorpal> not sure which sequence would be suitable
22:04:42 <Vorpal> would confuse any existing program of course
22:05:13 <Vorpal> fizzie, why make the word 4 bytes?
22:05:25 <oerjan> Vorpal: well you are going to need > 8 bit per byte, anyway
22:05:52 <Vorpal> wouldn't* 9-bit bytes and 81 bit words be better?
22:06:18 <Vorpal> 40.5 bit words are a bit hard to achieve I guess
22:07:13 <oerjan> having words being a non-power of 2 number of bytes sounds like awkward addressing as long as you're still basically binary
22:07:21 <Vorpal> oerjan, assuming your input uses 8 bits
22:07:25 <Vorpal> you could have 7 bit IO
22:08:08 <oerjan> Vorpal: well the underlying assumption here is how to make a bf that can handle standard binary formats
22:08:23 <fizzie> oerjan: Not if the machine is just word-addressed, and "byte" is basically "how many characters you typically pack inside one word".
22:08:56 <Vorpal> oerjan, you could split a binary bitstream into 8 bit chunks certainly, but you could just as well split it into 7 bit chunks
22:09:14 <Vorpal> (might need a bit of care if you don't have a multiple of 7 bits)
22:10:13 <oerjan> 9 and 81 should work splendidly for a ternary computer, of course
22:10:32 <Vorpal> 81 bits is quite a large word
22:10:55 <Vorpal> 81 trits is even more ridiculous
22:11:41 <fizzie> Nice middle ground between 32- and 64-bitness.
22:12:29 <fizzie> On the other hand, for combatibility with the rest of the world you can pack 128-bit quantities in the 81-trit words.
22:13:55 <Vorpal> what would a base-4 computer be called?
22:14:41 <oerjan> except that it's really just binary with more packing
22:14:53 <fizzie> Quinary computers replace the cache with a quiche.
22:15:09 <Vorpal> so base 5 then I guess is the next sufficiently different one
22:15:35 <ion> fizzie: hah
22:15:54 <ion> I want to replace the cache with a douche.
22:16:00 <oerjan> `addquote <fizzie> Quinary computers replace the cache with a quiche.
22:16:03 <HackEgo> 805) <fizzie> Quinary computers replace the cache with a quiche.
22:16:08 <fizzie> Much like I always think of decimal numbers as "just quinary with more packing".
22:16:45 <oerjan> fizzie: erm that's not quite right
22:17:07 <oerjan> decimal definitely involves both quinary and binary
22:17:20 <fizzie> Okay, "just bi-quinary" then.
22:17:48 <Vorpal> that sounds dirty for some reason...
22:18:23 <Vorpal> oerjan, funny thing is I parsed it as "bee queen base" first due to sv:bi = en:bee
22:18:34 <Vorpal> and I was wondering why it sounded dirty
22:18:46 <oerjan> i briefly considered changing it to bee, alas i had already pressed return
22:18:52 <ion> Duodenary computers replace the cache with a douche.
22:19:09 <Vorpal> ion, which base is that?
22:19:18 <ion> http://en.wikipedia.org/wiki/Number_prefix 12
22:19:56 <fizzie> I think people would just call them duodecimal.
22:20:09 <Vorpal> wouldn't it be dodeca-?
22:20:30 <fizzie> http://en.wikipedia.org/wiki/List_of_numeral_systems names it the duodecimal system. But it's pretty arbitrary.
22:20:43 <Vorpal> since hexdecimal is used from the Greek column as it were
22:20:57 <Vorpal> ion, so why use the Latin variant for 12?
22:21:05 <oerjan> "should we use greek or latin for 16?" "i dunno, let's use a little of each!"
22:21:54 <oerjan> maybe the namers were just afraid of sex
22:21:59 <ion> Binary came from there.
22:23:20 <oerjan> it's really the "hexa" that is off. of course the latin ones cannot make up their minds which number form to use for the base
22:23:52 <fizzie> oerjan: They could've just gone with "sedecimal" (cf. senary), that's not so sexy.
22:24:32 <Vorpal> sexdecimal sounds fine to me. Who would confuse it with the English meaning of "sex"?
22:24:51 <oerjan> Vorpal: you want a vowel between x and d
22:25:01 <fizzie> "Sexydecimal" might've made programming more popular.
22:25:17 <Vorpal> oerjan, why not sexadecimal then?
22:26:19 <fizzie> Wiki 'Octal': "In 1716 King Charles XII of Sweden asked Emanuel Swedenborg to elaborate a number system based on 64 instead of 10. Swedenborg however argued that for people with less intelligence than the king such a big base would be too difficult and instead proposed 8 as the base. In 1718 Swedenborg wrote (but did not publish) a manuscript: "En ny räknekonst som omväxlas vid talet 8 istället för det vanliga vid talet 10" ("A new arithmetic (or art of counting) which changes at th
22:26:21 <Vorpal> anyway sv:sex = en:six and also exists as a loan word from English in the other sense. People doesn't seem to get embarrassed when discussing numbers, so meh.
22:26:58 <oerjan> Vorpal: because -a- is not used that way in latin
22:27:20 <Vorpal> oerjan, so what vowel would be used then? And it didn't stop then with hexadecimal anyway
22:27:35 <oerjan> hm actually perhaps there shouldn't be a vowel
22:28:02 <Vorpal> (for the second instance)
22:28:32 <oerjan> but as fizzie says, the historically correct is se-
22:30:02 <fizzie> Somehow it's humorous how the "Usage" column for octal in the wiki says "Charles XII of Sweden, Unix-like permissions". It's the juxtaposition.
22:30:37 <oerjan> Vorpal: but hexa- is perfectly natural greek, see hexagon
22:31:01 <Vorpal> so what would the greek name for hexadecimal have been?
22:32:16 <oerjan> judging from dodekahedron
22:32:32 <fizzie> Often spelt with a 'c'.
22:32:40 <fizzie> "Hexadecastic" has a nice ring to it.
22:32:40 <oerjan> but none of the ones listed use greek for the last part
22:32:45 <Vorpal> are there any esolangs that are easiest to parse starting from the end of the file?
22:33:22 <oerjan> Vorpal: heh i doubt it
22:33:42 <Vorpal> it is a fairly obvious idea
22:34:06 -!- Slereah has quit.
22:34:23 <Vorpal> it wouldn't be too hard to design such a language anyway
22:34:28 <oerjan> because most are either so simple that they parse trivial from both ends, or have a syntax similar to normal languages. that's my presumption anyway
22:35:32 <oerjan> well i doubt any are accidentally easier, that is, and i don't recall any made explicitly for the purpose
22:35:42 <Vorpal> you could do stuff like line comments indicated by a symbol at the end of the line and similar. Oh and stuff like bash heredocs that started at the end would more or less require parsing from the end
22:36:43 <oerjan> and of course there's kayak, which parses precisely as easy both ways ;P
22:36:57 <Vorpal> not familiar with that one *looks it up*
22:38:09 <Vorpal> oerjan, anyway, I wonder what mixing things that were hard to parse from one direction with ones hard to parse from the other would do
22:38:33 <oerjan> ambiguity is the most likely answer :P
22:38:51 <Vorpal> I guess you might carefully manage to avoid tha
22:39:13 <Vorpal> oerjan, anyway ambiguity is the most likely answer when writing any non-trivial grammar :P
22:40:53 <oerjan> i understand one of the easiest ways to prove a grammar non-ambiguous is to run it through an LR(1) parser generator, which will punt if it isn't. of course that won't manage all non-ambiguous grammars and _is_ biased from the left.
22:41:19 <Vorpal> indeed that is a good way to check a grammar
22:41:34 <Vorpal> but it won't really be suited to a bidirectional grammar
22:41:40 <oerjan> (no algorithm can decide ambiguity in general, it's undecidable)
22:41:53 -!- calamari has joined.
22:41:55 -!- audy has joined.
22:42:03 <Vorpal> you most probably need to write a custom parser, or a new parser generator
22:42:27 <oerjan> but thinking about what happens if you mix left- and right- associative operators, precedence seems to be involved for this
22:42:58 <Vorpal> you probably need precedence for the left- and right-parsed constructs in a similar manner yes
22:44:33 <Vorpal> (anyway using a yacc style parser generator it technically only errors out on a reduce-reduce conflict, since a shift-reduce conflict has a default behaviour.)
22:45:02 <oerjan> yes, but it lists the number of each, afair
22:46:54 <oerjan> oh so sexadecimal has actually been used
22:48:23 <oerjan> "The etymologically proper Greek term would be hexadecadic (although in Modern Greek deca-hexadic (δεκαεξαδικός) is more commonly used).
22:51:17 <fizzie> Vorpal: There's a paper ("Parallel Parsing-based Reverse Engineering") on speeding up parsing on a multicore system by generating equivalent RL and LR parsers from a single grammar, and then running one thread from the left and another from the right; and another ("An Implementation of a Parallel Bidirectional Parsing Algorithm") that's more complicated, using LR and RL sub-grammars for some tokens.
22:51:44 <ion> fizzie: Your client doesn’t seem to split overlong lines.
22:52:05 <ion> fizzie: Irssi comes with splitlong.pl to do that.
22:53:12 <Vorpal> back, the connection to the bouncer broke there for a bit
22:53:36 <Vorpal> <kallisti> Chopin is so good.. <-- you might like Gregor then
22:54:04 -!- Slereah has joined.
22:54:15 <Vorpal> personally I'm not such a huge fan of Chopin (at least the bits I heard of him)
22:55:29 <Vorpal> <ion> fizzie: Your client doesn’t seem to split overlong lines. <-- it seemed to split it okay?
22:55:38 <fizzie> Vorpal: I assume it was for the earlier wikiquote.
22:55:42 <Vorpal> ion, no data was lost after all?
22:56:05 <Vorpal> fizzie, what client are you using?
22:56:16 <Vorpal> xchat handles splitting too you know
22:57:35 <kallisti> Vorpal: Debussy and Chopin are two of my favorites.
22:58:11 <kallisti> in terms of "classical" (inb4 Gregor shitstorm) composers.
22:59:10 <Jafet> Debussy and Chopin were late romantic, not classical!
23:00:05 <Vorpal> Jafet, snap, you beat me to it
23:00:22 <Vorpal> anyway I like some of Debussy, and I really dislike some other
23:00:49 <Vorpal> anyway, I much prefer actual classical music to that
23:00:56 <Jafet> He tried to write cakewalks at some point, which got funny
23:03:10 <quintopia> i like acoustic/symphonic music better the closer to the present it was made :D
23:03:24 <quintopia> i'm going to arbitrarily lump all academic electronic music into that category
23:03:35 <Jafet> What is non-acoustic music
23:03:42 <quintopia> it's symphonic even if the phons are artificially generated right?
23:03:55 <quintopia> justin bieber is non-acoustic music
23:04:37 <Jafet> By your arbitrary standards
23:04:54 <quintopia> really, what i meant by "acoustic" was "does not hinge on the quality of lyrics"
23:05:21 <quintopia> come up with a word that means that
23:05:54 <kallisti> which then hinges on beatboxing but not lyrics.
23:05:57 <quintopia> non-lyrical implies it has no lyrics, and instrumental implies either it has instruments, or we can't do without it
23:06:11 <kallisti> instrumental just means without vocals.
23:06:34 <ais523> well, how are you going to have lyrics without vocals, or vice versa?
23:06:41 <ais523> I guess vocals without lyrics is easier
23:06:42 <quintopia> since mortuos plango, vivos voco has vocals, but is not about singing at all
23:06:45 <Jafet> Stereolab albums have nonsense lyrics
23:06:45 <ais523> as you can just sing nonsense words
23:07:02 <olsner> I guess the lyrics could be thought or implied as well
23:07:30 <quintopia> ais523: but i don't want to disallow lyrics, just require that the meaning of the piece does not hinge on the words being sung/said
23:07:53 <ais523> quintopia: oh, I see, you want a name for the bit of the piece that doesn't involve lyrics, while allowing lyrics to exist as well?
23:08:06 <ais523> sort-of like the output of a karaoke filter?
23:08:40 <quintopia> ais523: i want a name for the class of music that may or may not have lyrics, but whose focus is directed away from the lyrics. namely, because the voices are being used more as instruments than "creators of meaning"
23:09:42 <Jafet> So that you can use that name to hate on Justin Bieber?
23:09:45 <quintopia> consider john appleton's "chef d'oeuvre". lots of words which we very readily process as having meaning...but they could just as easily have been other words.
23:10:10 <kallisti> quite a lot of John Zorn has nonsense lyrics.
23:10:22 <Jafet> Some African bush tribes have languages with absolute pitch. Their music and language are interchangeable
23:10:32 <quintopia> Jafet: i do not intend to hate on justin bieber. i have nothing against him, having never listened to him. he was the most popular artist i coudl think of whose work hinges primarily on lyrics
23:10:50 <Jafet> Well, I'm not sure if they were absolutely absolute
23:11:13 <Jafet> I don't think Bieber's popularity has anything to do with his lyrics.
23:11:44 <quintopia> i am not a marketing professional. i don't study what makes someone popular.
23:12:03 -!- Phantom_Hoover has quit (Quit: Leaving).
23:12:12 <Jafet> Strictly speaking, none of it is his music anyways
23:12:15 <Vorpal> <Jafet> Some African bush tribes have languages with absolute pitch. Their music and language are interchangeable <-- that is amazing, also would be impossible to speak for some people
23:12:37 -!- augur has quit (Remote host closed the connection).
23:12:40 <fizzie> ais523: You can do lyrics-without-vocals by e.g. putting in some morse code beeping.
23:12:50 <ais523> fizzie: hmm, interesting
23:13:25 <Jafet> Lyrics are generally more than words
23:13:33 <quintopia> Vorpal: i believe the fact that pitch is significant causes the prevalence of "perfect pitch" in those tribes to be much much higher
23:13:39 -!- augur has joined.
23:13:49 <quintopia> so, it doesn't eliminate as many people as it would elsewhere
23:14:05 <Jafet> I assumed Vorpal was referring to people not from those tribes
23:14:25 <fizzie> The others can just autotune. :p
23:14:26 <Vorpal> Jafet, well mostly that yes
23:14:27 <quintopia> i would think if they wanted to talk to outsiders, they'd learn english :P
23:14:38 <quintopia> it is the most prevalent second language in the world after all
23:24:48 <Vorpal> quintopia, which is the most prevalent first language I wonder
23:26:23 <Jafet> Mostly because the Indians are worse at agreeing on a language than the Chinese
23:26:52 <Jafet> Of course, agreeing meant conquer the land and make everyone speak your provincial language
23:29:21 -!- Jafet has quit (Quit: Leaving.).
23:43:04 -!- pkzip has joined.
23:44:51 -!- pkzip has left.
23:46:18 <kallisti> I remember how weird the Just constructor seemed to me.
23:46:30 <kallisti> I wonder what would be a better name for it.
23:46:52 -!- zzo38 has joined.
23:48:03 <nooga> :: (Functor f, Functor f1, Functor ((->) (a -> b))) =>
23:48:17 <nooga> (a -> b) -> f (f1 a) -> f (f1 b)
23:48:24 <monqy> in more mley languages iirc maybe is option, just is some, and nothing is none
23:48:47 <monqy> which is also a bit weird
23:49:23 <nooga> why every fmap ^ n is a function?
23:50:15 <oerjan> nooga: it eventually repeats
23:50:33 <monqy> fmap fmap fmap === fmap . fmap
23:51:16 <monqy> or something like that
23:52:50 <oerjan> i wrote it all out on the channel a few weeks ago
23:53:35 <oerjan> fmap ^ 6 = fmap ^ 10, or thereabouts
23:55:09 <oerjan> whenever the second argument of fmap is a function, the fmap = (.)
23:57:09 -!- derdon_ has quit (Remote host closed the connection).
23:57:39 -!- aloril has quit (Read error: Operation timed out).