BETA

repl 環境を試す

投稿日:2019-10-29
最終更新:2019-10-29

インストール

ghci のような感じで型とかチェックしたいので PureScript でも同様のコマンドがあるか調べたところ、spago repl を使えば良いということがわかりました。

ただ、ローカルにインストールしたspagoの場合は一手間必要なので注意してください。(ちょっとハマった)

λ yarn add --dev purescript spago  
λ yarn spago init  
λ yarn spago repl  
yarn run v1.19.1  
warning package.json: No license field  
purs repl: PSCi requires the psci-support package.  
For help getting started, visit https://github.com/purescript/documentation/blob/master/guides/PSCi.md  
spago: callCommand: purs repl ".spago/console/v4.2.0/src/**/*.purs" ".spago/effect/v2.0.1/src/**/*.purs" ".spago/prelude/v4.1.1/src/**/*.purs" ".spago/psci-support/v4.0.0/src/**/*.purs" "src/**/*.purs" "test/**/*.purs"  (exit 1): failed  
error Command failed with exit code 1.  
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.  

プロジェクト作成直後に yarn spago repl を実行すると上記のようなエラーが出ます。解決方法は簡単で、最初にyarn spago installを実行するだけです。

λ yarn spago install  
λ yarn spago repl  
...  

PSCi, version 0.13.4  
Type :? for help  

>   

PSCiっていう名前なんですね。

PSCi の使い方

ghciと同じようで微妙に違うので慣れましょう。

> 0  
0  

ghciは電卓として使うことができるのでPSCiでも同様に足し算を計算してみます。

> 1+1  
Error found:  
in module $PSCI  
at :1:2 - 1:3 (line 1, column 2 - line 1, column 3)  

  Unknown operator (+)  


See https://github.com/purescript/documentation/blob/master/errors/UnknownName.md for more information,  
or to contribute content related to this error.  

ここでエラーが出るんだ・・・。と思いましたが、どうやらPureScriptではPreludeの暗黙的importを行わないようです。

GHCで言うところのNoImplicitPrelude拡張が最初から有効になってる感じですね。

そのため、明示的にimport Preludeと入力して進むことにします。

> import Prelude  
> 1+1  
2  

型のチェック

式の型は:tまたは:typeでチェックできます。

> :t 0  
Int  

> :type map  
forall a b f. Functor f => (a -> b) -> f a -> f b  

カインドのチェック

型のカインドは:kまたは:kindでチェックできます。

> :k Int  
Type  

> :kind Int -> Int  
Type  

ペーストモード (マルチラインモード)

:pasteで開始し、Ctrl-Dでマルチラインモードから抜けます。

> :paste  
… add :: Int -> Int -> Int  
… add x y = x + y  
…   
> add 0 1  
1  

ghciだとこんな感じになりますね。

λ> :{  
Prelude| add :: Int -> Int -> Int  
Prelude| add x y = x + y  
Prelude| :}  

repl の終了

> :q  
See ya!  

参考リソース

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

PureScript のお勉強 (未来の自分に向けて書いています)

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう