++もinfixrなんで、そのアナロジーかなぁ、と。
Alternative の <|> は、左結合なのに。
a <> (b <> c) = (a <> b) <> c を達成するには、左が勝つようにしなければならず、嬉しくないです。
コンフィグを Semigroup にした場合、
conf1 <> conf2 <> conf3
と書けば conf3 が最優先されるようにしたいです。。。
a <> (b <> c) = (a <> b) <> c
associativity law を要求されているので、右結合でも左結合でも a <> b<> c
の計算結果は変わらないような? 何か質問の意図を勘違いしているでしょうか。tar tf ~/Library/Caches/Homebrew/downloads/1e4899432ad59163362a51ca3f2df23d87312f999ac5fb08948a8d0cc59e14b3--haskell-stack-1.7.1.high_sierra.bottle.tar.gz haskell-stack/1.7.1/ haskell-stack/1.7.1/.brew/ haskell-stack/1.7.1/bin/ haskell-stack/1.7.1/ChangeLog.md haskell-stack/1.7.1/INSTALL_RECEIPT.json haskell-stack/1.7.1/LICENSE haskell-stack/1.7.1/README.md haskell-stack/1.7.1/bin/stack haskell-stack/1.7.1/.brew/haskell-stack.rb
なんでバイナリーよりソースコードからのインストールを優先したんだろう。stack はコマンドラインツールなので、 GUI が中心の cask ではなく brew がふさわしいという判断だったようです。ソースコードからビルドされてしまう (キャッシュされるにせよ) ことは考えられていないように見えます。
Data.Monoid
にある Last
を使ってはどうでしょうか? Last
は Semigroup
にもなっています。[2 of 2] Compiling StackSetupShim ( /Users/xxx/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /private/var/folders/hj/07whzwn919z_mltvgj717dy80000gp/T/stack29944/HDBC-pos t/x86_64-osx/Cabal-2.2.0.1/setup/StackSetupShim.o ) Linking /private/var/folders/hj/07whzwn919z_mltvgj717dy80000gp/T/stack29944/HDBC-postgresql-2.3.2.5/.stack-work/dist/x86_64-osx/Cabal-2.2.0.1/setup/setup ... Configuring HDBC-postgresql-2.3.2.5... Preprocessing library for HDBC-postgresql-2.3.2.5.. /private/var/folders/hj/07whzwn919z_mltvgj717dy80000gp/T/stack29944/HDBC-postgresql-2.3.2.5/PTypeConv.hsc:53:16: error: use of undeclared identifier 'PG_TYPE_CHAR' hsc_const (PG_TYPE_CHAR); (省略) fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. compiling .stack-work/dist/x86_64-osx/Cabal-2.2.0.1/build/Database/HDBC/PostgreSQL/PTypeConv_hsc_make.c failed (exit code 1)
brew install postgres
$ brew ls postgresql | grep pgtypes.h /usr/local/Cellar/postgresql/10.5/include/pgtypes.h
-- Not exported, just used locally in several places. allLangDefault :: [KnownExtension] allLangDefault = [MonomorphismRestriction, MonoPatBinds, ImplicitPrelude] ghcDefault :: [Extension] ghcDefault = map EnableExtension (NondecreasingIndentation:allLangDefault)
*Main> :show language base language is: Haskell2010 with the following modifiers: -XNoDatatypeContexts -XNondecreasingIndentation
module Main where import GHC import GHC.Paths (libdir) import MonadUtils (liftIO) import EnumSet (toList) main :: IO () main = runGhc (Just libdir) $ do flags <- getSessionDynFlags liftIO $ print $ toList $ extensionFlags flags {- 実行結果 [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax ] -}
ghci
では別途有効になるはずです。dflags <- getDynFlags let dflags' = (`xopt_set` LangExt.ExtendedDefaultRules) . (`xopt_unset` LangExt.MonomorphismRestriction) $ dflags GHC.setInteractiveDynFlags dflags'
data T = forall a. Show a => T a deriving Show
ってのはだめなんでしょうか、無論自分でインスタンスを書けばShowのインスタンスになるのは当然なんですが、 変数a は必ずShowのインスタンスである事が保障されてるので Showのインスタンスは機械的に導けると思うのですが。 例えば、T 型でEq を導きたいとかなら変ってくるとは思いますが。stack
と打てばいいです。Minimal installers provide centrally the GHC compiler and the Cabal and Stack tools for installing packages. Some may install further build tools (i.e. for parsing and lexing) as well.と書いてあるので入ってるはずです。