Haskell에서 외부 모듈을 사용하고 싶을 때 (모듈 import 및 패키지 install)

9020 단어 하스켈

모듈명과 패키지명



Haskell에서 외부 모듈을 사용하려면 import에서 모듈 이름을 선언하십시오.

import.hs
import System.Random
Data.Char 와 같은 대표적인 몇개의 모듈은, 환경 구축시에 미리 로컬 환경에 도입되고 있으므로 import 하는 것만으로, 곧 사용할 수 있게 된다.
그러나 로컬 환경에 도입되지 않은 패키지를 사용하려면 import 전에 install가 필요합니다.

이 때 install 명령에 지정해야하는 것은 모듈 이름이 아닌 패키지 이름입니다.

예를 들어, 난수를 취급하는 모듈의 명칭은 System.Random 이지만, 패키지의 명칭은 random 이므로, install 때는 random 를 지정할 필요가 있다.

install.hs
> :t random
<interactive>:1:1: error: Variable not in scope: random
-- random関数を使いたい。が、そんなものはないと言われる

> :m System.Random
<no location info>: error:
    Could not find module System.Random
    It is not a module in the current program, or in any known package.

-- random関数の含まれるSystem.Randomモジュールをimportしようとしたが知らないと言われてしまう

> stack install random
random> configure
random> Configuring random-1.1...
random> build
random> Building random-1.1...
random> Preprocessing library random-1.1...
random> [1 of 1] Compiling System.Random    ( System\Random.hs, .stack-work\dist\ca59d0ab\build\System\Random.o )
random>
random> C:\Users\xx\AppData\Local\Temp\stack3120\random-1.1\System\Random.hs:43:1: warning: [-Wtabs]
random>     Tab character found here, and in 74 further locations.
random>     Please use spaces instead.
random> copy/register
random> Installing library in
random> C:\sr\snapshots\47914953\lib\x86_64-windows-ghc-8.0.2\random-1.1-9tceXaeYIMZ4JrKq20Egog
random> Registering random-1.1...
-- パッケージ名randomを指定してinstall

> :m System.Random
> :t random
random :: (RandomGen g, Random a) => g -> (a, g)
-- random関数が使えるようになった

Haskell을 시작한 후 잠시 이거 모르고 고생했다. (뭐라고 해도, 이것을 모르면 난수조차 사용할 수 없다)

모듈과 패키지의 관계는 이런 식으로 확인할 수 있다.

사용하고 싶은 함수명 등으로부터 패키지명을 조사한다



지금 사용하고 싶은 난수를 생성하는 함수 random를 Hoogle 등으로 검색하고


모듈 문서로 전환합니다. 이번에는 System.Random이다.


그 상부에 있는 둘러싸는 부분이 패키지명.
따라서 install 할 때는 cabal install random가 되고 stack install random로 한다.

패키지 이름에서 모듈 이름 확인



반대로 패키지 이름 문서에서 모듈 이름을 확인하려면 패키지 이름에서 패키지 문서로 유사하게 전환합니다 .
Modules를 확인합니다.

좋은 웹페이지 즐겨찾기