Closed henrylaxen closed 4 years ago
Hi @henrylaxen,
If you launch cabal in verbose mode:
cabal v2-repl --verbose=3
You will see that it examines both global and local package databases. Moreover, there will be cabal.project
and cabal.project.local
files that will bring some light on the context of ghci that was launched under the hood of cabal v2-repl
.
When you execute ghci src/Fay/Conert.hs
you will use only base
and few more packages represented in global package database. In my case output was different:
GHCi, version 8.10.1: https://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /Users/agr/.ghci
[1 of 1] Compiling Fay.Convert ( src/Fay/Convert.hs, interpreted )
src/Fay/Convert.hs:18:1: error:
Could not find module ‘Fay.Compiler.Prelude’
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
18 | import Fay.Compiler.Prelude
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:21:1: error:
Could not find module ‘Control.Spoon’
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
21 | import Control.Spoon
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:22:1: error:
Could not find module ‘Data.Aeson’
Perhaps you meant Data.Version (from base-4.14.0.0)
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
22 | import Data.Aeson
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:23:1: error:
Could not find module ‘Data.Aeson.Types’
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
23 | import Data.Aeson.Types (parseEither)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:25:1: error:
Could not find module ‘Data.Generics.Aliases’
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
25 | import Data.Generics.Aliases
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:26:1: error:
Could not find module ‘Data.HashMap.Strict’
Perhaps you meant
Data.IntMap.Strict (from containers-0.6.2.1)
Data.Map.Strict (from containers-0.6.2.1)
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
26 | import Data.HashMap.Strict (HashMap)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:27:1: error:
Could not find module ‘Data.HashMap.Strict’
Perhaps you meant
Data.IntMap.Strict (from containers-0.6.2.1)
Data.Map.Strict (from containers-0.6.2.1)
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
27 | import qualified Data.HashMap.Strict as Map
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:31:1: error:
Could not find module ‘Data.Vector’
Perhaps you meant Data.Functor (from base-4.14.0.0)
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
31 | import Data.Vector (Vector)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:32:1: error:
Could not find module ‘Data.Vector’
Perhaps you meant Data.Functor (from base-4.14.0.0)
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
32 | import qualified Data.Vector as Vector
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Failed, no modules loaded.
(0.14 secs,)
There were no vector
, aeson
, unordered-containers
, syb
packages.
Thanks, @swamp-agr
Yes, there was a bit of setup involved which I did not include because I thought you might already know the answer off the top of you head. Here is what I had to do to get to this point:
First I installed all of the missing modules with a script. That I'm attaching below. Then I had to run
ghc-pkg hidebase-compat-batteries
Attached is the output of ghc-pkg list Finally I cd'd into the directory that contained the Fay source code: /home/henry/haskell/fay/src/Fay and ran: ghci -i.. Convert.hs which produced Convert.hs:58:13: error: • Could not deduce (ToJSON UTCTime) arising from a use of ‘toJSON’ from the context: Data a bound by the type signature for: encodeFay :: (GenericQ Value -> GenericQ Value) -> GenericQ Val at Convert.hs:(51,1)-(71,17) or from: Data a1 bound by a type expected by the context: GenericQ Value at Convert.hs:(52,5)-(62,15) ...
So the mystery to me is why cabal v2-repl works, and ghci doesn't. All of the needed packages (and then some because I came across this in a web app I was writing) are available either in the global database: home/henry/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d or the private database: /home/henry/.ghc/x86_64-linux-8.8.3/package.conf.d And nowhere can I find that UTCTime has a derived Generic instance, and yet the v2-repl works and ghci doesn't. I guess my real question is why doesn't the v2-repl crash with the same error message? Where did the magic happen? Best wishes, Henry Laxen
On Monday, April 20, 2020 13:48 CDT, Andrey Prokopenko notifications@github.com wrote: Hi @henrylaxen, If you launch cabal in verbose mode:cabal v2-repl --verbose=3
You will see that it examines both global and local package databases. Moreover, there will be cabal.project and cabal.project.local files that will bring some light on the context of ghci that was launched under the hood of cabal v2-repl. When you execute ghci src/Fay/Conert.hs you will use only base and few more packages represented in global package database. In my case output was different:GHCi, version 8.10.1: https://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /Users/agr/.ghci [1 of 1] Compiling Fay.Convert ( src/Fay/Convert.hs, interpreted )
src/Fay/Convert.hs:18:1: error:
Could not find module ‘Fay.Compiler.Prelude’
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
18 | import Fay.Compiler.Prelude
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:21:1: error:
Could not find module ‘Control.Spoon’
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
21 | import Control.Spoon
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:22:1: error:
Could not find module ‘Data.Aeson’
Perhaps you meant Data.Version (from base-4.14.0.0)
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
22 | import Data.Aeson
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:23:1: error:
Could not find module ‘Data.Aeson.Types’
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
23 | import Data.Aeson.Types (parseEither)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:25:1: error:
Could not find module ‘Data.Generics.Aliases’
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
25 | import Data.Generics.Aliases
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:26:1: error:
Could not find module ‘Data.HashMap.Strict’
Perhaps you meant
Data.IntMap.Strict (from containers-0.6.2.1)
Data.Map.Strict (from containers-0.6.2.1)
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
26 | import Data.HashMap.Strict (HashMap)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:27:1: error:
Could not find module ‘Data.HashMap.Strict’
Perhaps you meant
Data.IntMap.Strict (from containers-0.6.2.1)
Data.Map.Strict (from containers-0.6.2.1)
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
27 | import qualified Data.HashMap.Strict as Map
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:31:1: error:
Could not find module ‘Data.Vector’
Perhaps you meant Data.Functor (from base-4.14.0.0)
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
31 | import Data.Vector (Vector)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Fay/Convert.hs:32:1: error:
Could not find module ‘Data.Vector’
Perhaps you meant Data.Functor (from base-4.14.0.0)
Use -v (or :set -v
in ghci) to see a list of the files searched for.
|
32 | import qualified Data.Vector as Vector
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Failed, no modules loaded.
(0.14 secs,)
There were no vector, aeson, unordered-containers, syb packages.
Thanks,
@swamp-agr
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
/home/henry/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d Cabal-3.0.1.0 array-0.5.4.0 base-4.13.0.0 binary-0.8.7.0 bytestring-0.10.10.0 containers-0.6.2.1 deepseq-1.4.4.0 directory-1.3.6.0 filepath-1.4.2.1 (ghc-8.8.3) ghc-boot-8.8.3 ghc-boot-th-8.8.3 ghc-compact-0.1.0.0 ghc-heap-8.8.3 ghc-prim-0.5.3 ghci-8.8.3 haskeline-0.7.5.0 hpc-0.6.0.3 integer-gmp-1.0.2.0 libiserv-8.8.3 mtl-2.2.2 parsec-3.1.14.0 pretty-1.1.3.6 process-1.6.8.0 rts-1.0 stm-2.5.0.0 template-haskell-2.15.0.0 terminfo-0.4.1.4 text-1.2.4.0 time-1.9.3 transformers-0.5.6.2 unix-2.7.2.2 xhtml-3000.2.2.1
/home/henry/.ghc/x86_64-linux-8.8.3/package.conf.d HTTP-4000.3.14 HUnit-1.6.0.0 MonadRandom-0.5.1.2 Only-0.1 QuickCheck-2.14 SHA-1.6.4.4 StateVar-1.2 adjunctions-4.4 aeson-1.4.7.1 ansi-terminal-0.10.3 async-2.2.2 attoparsec-0.13.2.4 auto-update-0.1.6 base-compat-0.11.1 (base-compat-batteries-0.11.1) base-orphans-0.8.2 base64-bytestring-1.0.0.3 basement-0.0.11 bifunctors-5.5.7 binary-0.8.8.0 blaze-builder-0.4.1.0 blaze-html-0.9.1.2 blaze-markup-0.8.2.4 byteable-0.1.1 bytestring-builder-0.10.8.2.0 cabal-doctest-1.0.8 call-stack-0.2.0 case-insensitive-1.2.1.0 cassava-0.5.2.0 cereal-0.5.8.1 cipher-aes-0.2.11 clientsession-0.9.1.2 clock-0.8 colour-2.3.5 comonad-5.0.6 conduit-1.3.2 conduit-extra-1.3.5 configurator-0.3.0.0 contravariant-1.5.2 cprng-aes-0.6.1 crypto-api-0.13.3 crypto-cipher-types-0.0.9 crypto-random-0.0.9 css-text-0.1.3.0 curl-1.3.8 data-default-0.7.1.1 data-default-class-0.1.2.0 data-default-instances-containers-0.0.1 data-default-instances-dlist-0.0.1 data-default-instances-old-locale-0.0.1 directory-1.3.6.1 directory-tree-0.12.1 distributive-0.6.2 dlist-0.8.0.8 easy-file-0.2.2 edit-distance-0.2.2.1 entropy-0.4.1.6 exceptions-0.10.4 extra-1.7.1 fast-logger-3.0.1 filelock-0.1.1.4 free-5.1.3 groom-0.1.2.1 hashable-1.3.0.0 haskell-lexer-1.1 haskell-src-exts-1.23.0 haskell-src-meta-0.8.5 heist-1.1.0.1 here-1.2.13 hostname-1.0 hspec-2.7.1 hspec-core-2.7.1 (hspec-discover-2.7.1) hspec-expectations-0.8.2 integer-logarithms-1.0.3 invariant-0.5.3 io-streams-1.5.1.0 io-streams-haproxy-1.0.1.0 kan-extensions-5.2 lens-4.19.2 lens-family-1.2.3 lens-family-core-1.2.3 lens-family-th-0.5.0.2 lens-simple-0.1.0.9 lifted-base-0.2.3.12 logging-3.0.5 logict-0.7.0.2 map-syntax-0.3 math-functions-0.3.3.0 memory-0.15.0 mime-mail-0.5.0 monad-control-1.0.2.3 monad-logger-0.3.32 monad-loops-0.4.3 mono-traversable-1.0.15.1 mwc-random-0.14.0.0 network-3.1.1.1 network-uri-2.6.3.0 old-locale-1.0.0.7 old-time-1.1.0.3 parallel-3.2.2.0 pretty-show-1.10 primitive-0.7.0.1 process-1.6.8.2 profunctors-5.5.2 quickcheck-io-0.2.0 random-1.1 random-shuffle-0.0.4 readable-0.3.1 reflection-2.1.5 regex-base-0.94.0.0 regex-compat-0.95.2.0 regex-posix-0.96.0.0 resourcet-1.2.3 safe-0.3.18 safe-exceptions-0.1.7.0 scientific-0.3.6.2 securemem-0.1.10 semigroupoids-5.3.4 semigroups-0.19.1 setenv-0.1.1.3 skein-1.0.9.4 snap-core-1.0.4.1 snap-server-1.1.1.1 split-0.2.3.4 splitmix-0.0.4 spoon-0.3.1 stm-chans-3.0.0.4 streaming-commons-0.2.1.2 strict-0.3.2 string-conversions-0.4.0.1 syb-0.7.1 tagged-0.8.6 tagsoup-0.14.8 text-short-0.1.3 tf-random-0.5 th-abstraction-0.3.2.0 th-expand-syns-0.4.6.0 th-lift-0.8.1 th-lift-instances-0.1.16 th-orphans-0.13.10 th-reify-many-0.1.9 time-1.10 time-compat-1.9.3 time-locale-compat-0.1.1.5 transformers-base-0.4.5.2 transformers-compat-0.6.5 typed-process-0.2.6.0 unix-compat-0.5.2 unix-time-0.4.7 unliftio-core-0.2.0.1 unordered-containers-0.2.10.0 utf8-string-1.0.1.1 uuid-types-1.0.3 value-supply-0.6 vector-0.12.1.2 vector-algorithms-0.8.0.3 vector-th-unbox-0.2.1.7 void-0.7.3 websockets-0.12.7.0 websockets-snap-0.10.3.1 xmlhtml-0.2.5.2 xss-sanitize-0.3.6 zlib-0.6.2.1 zlib-bindings-0.1.1.5
When you launch ghci
verbosely, you will see which packages will be chosen from global package database. In my case time
(exporting UTCTime
) was loaded, aeson
(exporting ToJSON
instances) was not loaded.
Prelude> :m + Data.Time
Prelude Data.Time> :i UTCTime
data UTCTime = UTCTime {utctDay :: Day, utctDayTime :: DiffTime}
-- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’
instance [safe] Eq UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’
instance [safe] Ord UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’
instance [safe] Show UTCTime
-- Defined in ‘time-1.9.3:Data.Time.LocalTime.Internal.ZonedTime’
instance [safe] Read UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Format.Parse’
instance [safe] FormatTime UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Format.Format.Instances’
instance [safe] ParseTime UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Format.Parse.Instances’
Prelude Data.Time> :m + Data.Aeson
<no location info>: error:
Could not find module ‘Data.Aeson’
Perhaps you meant Data.Version (from base-4.13.0.0)
Prelude Data.Time> :set -package aeson
package flags [-package aeson{package aeson True ([])}]
loading package database $HOME/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
cannot satisfy -package aeson
Checking package database:
ghc-pkg describe aeson
ghc-pkg: cannot find package aeson
Let see what differs when invoking v2-
commands.
If you launch cabal v2-repl -v
you will see that dist-newstyle
directory would be created.
Since v.2.0 cabal supports "nix-style" builds.
cabal v2-repl -v
this build was affected by the following (project) config files:
- $HOME/projects/fay/cabal.project
- $HOME/projects/fay/cabal.project.local
Build profile: -w ghc-8.8.3 -O1
In order, the following will be built:
- fay-0.24.1.0 (first run)
creating $HOME/projects/fay/dist-newstyle/build
creating $HOME/projects/fay/dist-newstyle/tmp
It produces dist-newstyle
directory.
creating
$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0
creating
$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/cache
whenReRegister: nothing to register
creating
$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/setup
$HOME/.ghcup/bin/ghc --make -fbuilding-cabal-package -odir $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/setup -hidir $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/setup -i -i$HOME/projects/fay/. -optP-include -optP$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/setup/setup_macros.h -hide-all-packages -no-user-package-db -package-db $HOME/.cabal/store/ghc-8.8.3/package.db -package-db $HOME/projects/fay/dist-newstyle/packagedb/ghc-8.8.3 -package-id Cabal-3.0.1.0 -package-id base-4.13.0.0 $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/setup/setup.hs -o $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/setup/setup -threaded
$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/setup/setup
repl --verbose=2
--builddir=$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0
lib:fay
$HOME/.ghcup/bin/ghc-pkg init $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/package.conf.inplace
It creates build plan, cache, local package database (!) and populates it according to the plan.
creating
$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build
creating
$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build/autogen
creating
$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build/autogen
Preprocessing library for fay-0.24.1.0..
creating
$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build
$HOME/.ghcup/bin/ghc --interactive -fbuilding-cabal-package -O0 -outputdir $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build -odir $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build -hidir $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build -stubdir $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build -i -i$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build -isrc -isrc/haskell-names -i$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build/autogen -i$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build/global-autogen -I$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build/autogen -I$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build/global-autogen -I$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build -optP-include -optP$HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/build/autogen/cabal_macros.h -this-unit-id fay-0.24.1.0-inplace -hide-all-packages -Wmissing-home-modules -no-user-package-db -package-db $HOME/.cabal/store/ghc-8.8.3/package.db -package-db $HOME/projects/fay/dist-newstyle/packagedb/ghc-8.8.3 -package-db $HOME/projects/fay/dist-newstyle/build/x86_64-osx/ghc-8.8.3/fay-0.24.1.0/package.conf.inplace -package-id sn-1.4.7.1-2b5536a6 -package-id base-4.13.0.0 -package-id bs-cmpt-0.10.5-2f7269e4 -package-id bytestring-0.10.10.0 -package-id containers-0.6.2.1 -package-id dt-dflt-0.7.1.1-24b74cce -package-id dt-lns-lght-0.1.2.2-b1f6f357 -package-id directory-1.3.6.0 -package-id filepath-1.4.2.1 -package-id ghc-pths-0.1.0.12-47aa3fee -package-id hskll-src-xts-1.23.0-56dde871 -package-id lngg-cmscrpt-0.19.1.0-6f943873 -package-id mtl-2.2.2 -package-id mtl-cmpt-0.2.2-5ce678a6 -package-id process-1.6.8.0 -package-id sf-0.3.18-14e4ec52 -package-id shkspr-2.0.24-a6c05800 -package-id srcmp-0.1.6-4a3cebd2 -package-id splt-0.2.3.4-63d1c379 -package-id spn-0.3.1-4e977d3d -package-id syb-0.7.1-32d6b059 -package-id text-1.2.4.0 -package-id time-1.9.3 -package-id transformers-0.5.6.2 -package-id trnsfrmrs-cmpt-0.6.5-83d56f83 -package-id trvrs-wth-clss-1.0.1.0-3f3622ee -package-id nplt-1.6.12-057b3551 -package-id nrdrd-cntnrs-0.2.10.0-23962be8 -package-id tf8-strng-1.0.1.1-f0972d8a -package-id vctr-0.12.1.2-be5d6a11 -XHaskell98 Fay Fay.Compiler Fay.Compiler.Desugar Fay.Compiler.Parse Fay.Compiler.Prelude Fay.Config Fay.Convert Fay.FFI Fay.Types Fay.Types.CompileError Fay.Types.CompileResult Fay.Compiler.Decl Fay.Compiler.Defaults Fay.Compiler.Desugar.Name Fay.Compiler.Desugar.Types Fay.Compiler.Exp Fay.Compiler.FFI Fay.Compiler.GADT Fay.Compiler.Import Fay.Compiler.InitialPass Fay.Compiler.Misc Fay.Compiler.ModuleT Fay.Compiler.Optimizer Fay.Compiler.Packages Fay.Compiler.Pattern Fay.Compiler.PrimOp Fay.Compiler.Print Fay.Compiler.QName Fay.Compiler.State Fay.Compiler.Typecheck Fay.Exts Fay.Exts.NoAnnotation Fay.Exts.Scoped Fay.Runtime Fay.Types.FFI Fay.Types.Js Fay.Types.ModulePath Fay.Types.Printer Language.Haskell.Names Language.Haskell.Names.Annotated Language.Haskell.Names.Exports Language.Haskell.Names.GetBound Language.Haskell.Names.GlobalSymbolTable Language.Haskell.Names.Imports Language.Haskell.Names.LocalSymbolTable Language.Haskell.Names.ModuleSymbols Language.Haskell.Names.Open.Base Language.Haskell.Names.Open.Derived Language.Haskell.Names.Open.Instances Language.Haskell.Names.RecordWildcards Language.Haskell.Names.Recursive Language.Haskell.Names.ScopeUtils Language.Haskell.Names.SyntaxUtils Language.Haskell.Names.Types Paths_fay -Wall -hide-all-packages
GHCi, version 8.8.3: https://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from $HOME/.ghci
And finally it:
repl/ghci
....
Ok, 56 modules loaded.
*Fay> :i UTCTime
<interactive>:1:1: error: Not in scope: ‘UTCTime’
*Fay> :m + Data.Time Data.Aeson
*Fay Data.Time Data.Aeson> :i UTCTime
data UTCTime = UTCTime {utctDay :: Day, utctDayTime :: DiffTime}
-- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’
instance [safe] Eq UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’
instance [safe] Ord UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’
instance [safe] Show UTCTime
-- Defined in ‘time-1.9.3:Data.Time.LocalTime.Internal.ZonedTime’
instance [safe] Data UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Clock.Internal.UTCTime’
instance [safe] Read UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Format.Parse’
instance [safe] FormatTime UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Format.Format.Instances’
instance [safe] ParseTime UTCTime
-- Defined in ‘time-1.9.3:Data.Time.Format.Parse.Instances’
instance ToJSON UTCTime
-- Defined in ‘aeson-1.4.7.1:Data.Aeson.Types.ToJSON’
instance ToJSONKey UTCTime
-- Defined in ‘aeson-1.4.7.1:Data.Aeson.Types.ToJSON’
instance FromJSON UTCTime
-- Defined in ‘aeson-1.4.7.1:Data.Aeson.Types.FromJSON’
instance FromJSONKey UTCTime
-- Defined in ‘aeson-1.4.7.1:Data.Aeson.Types.FromJSON’
The magic is inside of cabal and its dist-newstyle
machinery!
Thanks so much Andrey for tracking this down. I have a better understanding of ghci vs cabal now.
Best wishes,
Henry Laxen
--
Nadine and Henry Laxen The rest is silence
Gral. Manuel Márquez de León 1301
Onix #2302
Zona Urban Rio Never try to teach a pig to sing
Tijuana It wastes your time
+52 (333) 667-8633 And it annoys the pig
Henry,
Question seems to be resolved. If you have more questions feel free to reopen it or create a new one.
Best Regards, @swamp-agr
Dear Adam, Chris & co., First thank you for the service you are providing by writing and maintaining fay. I would be lost without it. I have what I hope is a very simple question. When I am in the top level fay directory, I can run:
cabal v2-repl
and after a few warnings, it compiles and I am greeted with the nice Fay> prompt.However, if I descend into the src/Fay directory and type:
ghci -i.. Convert.hs
I get:
Upon examining the code, I don't see how it can possibly ever work.
According to the Data.Aeson.Types, UTCTime should be an instance of Generic but I can't find that anywhere. What magic is going on here? Can you explain or point me in the right direction to understand this. Thanks in advance. Best wishes, Henry Laxen