Как решить проблему «Не удается найти эффекты импорта» в Idris? - PullRequest
1 голос
/ 20 марта 2019

Я пытался скомпилировать следующий исходный файл "hello world" через некоторое время вдали от Idris, используя среду оболочки nix ( direction ):

module Main

import Effects
import Effect.StdIO

hello : Eff () [STDIO]
hello = putStrLn "Hello world!"

main : IO ()
main = run hello

Мой вывод был следующим во время эксперимента; несмотря на указание библиотеки, которая кажется правильной, в конце я получаю ту же ошибку:

[nix-shell:~/workspace/idris_tmp]$ idris --listlibs
00prelude-idx.ibc
prelude
00base-idx.ibc
base

[nix-shell:~/workspace/idris_tmp]$ exit
exit
brandon@brandon-750-170se-DevContainer:~/workspace/idris_tmp
$ nix-shell -p 'idrisPackages.with-packages (with idrisPackages; [ contrib effects ])' -p closurecompiler
these derivations will be built:
  /nix/store/j44rkb0fpxqd4qkamrg1ysf9kbx1q2qa-idris-1.3.0.drv
these paths will be fetched (1.55 MiB download, 4.37 MiB unpacked):
  /nix/store/1fcldlyp5n0ry22dsqfam68mpra6jky9-idris-effects-1.3.0
  /nix/store/a9rjm84pbmvg6dmkdzhl9q1wliyi0q4b-idris-contrib-1.3.0
copying path '/nix/store/a9rjm84pbmvg6dmkdzhl9q1wliyi0q4b-idris-contrib-1.3.0' from 'https://cache.nixos.org'...
copying path '/nix/store/1fcldlyp5n0ry22dsqfam68mpra6jky9-idris-effects-1.3.0' from 'https://cache.nixos.org'...
building '/nix/store/j44rkb0fpxqd4qkamrg1ysf9kbx1q2qa-idris-1.3.0.drv'...
/nix/store/5dny6qnjfq9liya5z1sxvr2g64bqypwl-idris-base-1.3.0/nix-support:
propagated-build-inputs: /nix/store/1fcldlyp5n0ry22dsqfam68mpra6jky9-idris-effects-1.3.0/nix-support/propagated-build-inputs
/nix/store/a9rjm84pbmvg6dmkdzhl9q1wliyi0q4b-idris-contrib-1.3.0/nix-support:
propagated-build-inputs: /nix/store/1fcldlyp5n0ry22dsqfam68mpra6jky9-idris-effects-1.3.0/nix-support/propagated-build-inputs
/nix/store/a5x52wi84jgjiimpnkfpcl3mbpbkf1r4-idris-1.3.0/nix-support:
propagated-build-inputs: /nix/store/1fcldlyp5n0ry22dsqfam68mpra6jky9-idris-effects-1.3.0/nix-support/propagated-build-inputs


[nix-shell:~/workspace/idris_tmp]$ idris --listlibs
00effects-idx.ibc
effects
00base-idx.ibc
base
00prelude-idx.ibc
prelude
00contrib-idx.ibc
contrib

[nix-shell:~/workspace/idris_tmp]$ idris --codegen javascript hello.idr -o hello.js
 Can't find import Effects

1 Ответ

1 голос
/ 20 марта 2019

Попробуйте добавить -p effects к командной строке, как в

idris -p effects --codegen javascript hello.idr -o hello.js

это загрузит дополнительную библиотеку / пакет. Вы можете избежать этого, определив файл ipkg, который описывает вашу сборку. Смотрите здесь: http://docs.idris -lang.org / ru / latest / reference / packages.html

...