1to100pen
『コンパイルの早いGHC』は男だけでなく女も望んでいる(と思う)。
fastghc() { ghc "${@/-O?([012])/-O0}"; }-O2 を指定してコンパイルした時に通常のGHCとの違いが顕著になると思われます。Monad で話を進めていましたが、 Data.Monoid で定義されている Ap の実装を見ると lift してる感じがわかりやすいですね。-- | @since 4.12.0.0
instance (Applicative f, Semigroup a) => Semigroup (Ap f a) where
(Ap x) <> (Ap y) = Ap $ liftA2 (<>) x y
-- | @since 4.12.0.0
instance (Applicative f, Monoid a) => Monoid (Ap f a) where
mempty = Ap $ pure mempty{-# LANGUAGE OverloadedStrings, OverloadedLabels #-}
{- cabal:
build-depends: base, haskell-gi-base, gi-gtk
-}
import qualified GI.Gtk as Gtk
import Data.GI.Base
main :: IO ()
main = do
Gtk.init Nothing
win <- new Gtk.Window [ #title := "Hi there" ]
on win #destroy Gtk.mainQuit
button <- new Gtk.Button [ #label := "Click me" ]
on button #clicked (set button [ #sensitive := False,
#label := "Thanks for clicking me" ])
#add win button
#showAll win
Gtk.main