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