Contents of my /usr/local/bin/ghc file:
GHCBIN="/usr/local/lib/ghc-6.7.20070328/ghc-6.7.20070328";
TOPDIROPT="-B/usr/local/lib/ghc-6.7.20070328";
# Mini-driver for GHC
exec $GHCBIN $TOPDIROPT ${1+"$@"} -L/opt/local/lib -I/opt/local/include
blog = const Nothing
GHCBIN="/usr/local/lib/ghc-6.7.20070328/ghc-6.7.20070328";
TOPDIROPT="-B/usr/local/lib/ghc-6.7.20070328";
# Mini-driver for GHC
exec $GHCBIN $TOPDIROPT ${1+"$@"} -L/opt/local/lib -I/opt/local/include
"Hissing Fauna, Are You the Destroyer?" is final, clinching proof that Kevin Barnes is totally crazy. And totally awesome.Other funny comments that you can find on the songs in Hissing Fauna:
(on Faberge Falls For Shuggie)
Favorite song. It's ridonkulous.The last one is too clever for me, but I mean, I looove this kind of stuff. When I'm not punishing my brain with Haskell, I'm either procrastinating or listening to music. And lately often procrastinating about music.
(on Heimdalsgate Like a Promethean Curse)
By the way, it is definetely about drugs.
(on Heimdalsgate Like a Promethean Curse)
My mom flat out asked me what the hell this song was about, and I simply told her
"Someone who is having a chemical imbalance and wants to be in a good mood, this their chemical imbalance shifting."
It's kind of funny I should be able to sum it up in a few lines. It's such a deep song.
(on Heimdalsgate Like a Promethean Curse)
"the mousey girl screams violence, violence
the mousey girl screams violence
she gets hysterical
'cause they're both so mean
and it's my favorite scene
oh, the cruelty so predictable
makes you sad on the stage"
Reference to Edward Albee's play Who's Afriad of Virginia Woolf. Honey, the mousey character, does scream "Violence! Violence!" at a point in the play when George and Martha are at each others throats.
(on The Past Is A Grotesque Animal)
trace :: String -> a -> aWhen called, trace outputs the string in its first argument, before returning the second argument as its result.
myfun a b | trace ("myfun " ++ show a ++ " " ++ show b) False = undefinedThe advantage is that disabling and enabling the trace takes only one line comment.
myfun a b = ...
import Hugs.ObserveAnd then in hugs:
f' = observe "Informative name for f" f
f x = if odd x then x*2 else 0
Main> map f' [1..5]The evaluation outputs a report of all the invocations of f and their result.
[2,0,6,0,10]
>>>>>>> Observations <<<<<<> 10
, \ 4 -> 0
, \ 3 -> 6
, \ 2 -> 0
, \ 1 -> 2
}
*main:Main> :break add Main 2Once a breakpoint is hit, you can explore the bindings in scope, as well as to evaluate any haskell expression, as you would do in a normal GHCi prompt. The ':print' command can be very useful to explore the lazyness of your code.
Breakpoint set at (2,15)
*main:Main> qsort [10,9..1]
Local bindings in scope:
x :: a, xs :: [a], left :: [a], right :: [a]
qsort2.hs:2:15-46> :sprint x
x = _
qsort2.hs:2:15-46> x
This is an untyped, unevaluated computation. You can use seq to
force its evaluation and then :print to recover its type
qsort2.hs:2:15-46> seq x ()
()
qsort2.hs:2:15-46> :p x
x - 10
[posted with ecto]