LoginSignup
1
0

More than 1 year has passed since last update.

圏論プログラミング言語 CPLをMacbookで使う

Last updated at Posted at 2021-11-01

cabal get CPLで、Macbookに圏論プログラミング言語 CPL:Categorical Programming Languageをインストールしました。CPL言語については、以下がわかりやすいです。

今回インストールしたのは、CPLのHaskell実装です。

CPLは、萩野さんという日本人が開発した言語です。

萩野さんがエディンバラ大学に提出されたCPL言語を取り扱った博士論文です。

Macbookへのインストール: 参考にしたウェブページ

次のウェブページに従って、Macbookにサクッとインストールできました。

以下の記事では、Hasklell実装ではなく、「VAX UNIX 4.2 上で Franz Lisp を使って実装されている」オリジナルのCPLをインストールする方法が説明されています。ここで解説されているMacbookへのインストール手順は、骨の折れる作業です。

Terminal
electron@diynoMacBook-Pro ~ % cabal --version
cabal-install version 3.6.0.0
compiled using version 3.6.1.0 of the Cabal library 
electron@diynoMacBook-Pro ~ % 

これはうまくいかなかった

  • cabal: Failed to build readline-1.0.3.0 (which is required by exe:cpl from
Terminal
electron@diynoMacBook-Pro ~ % cabal install CPL
Resolving dependencies...
Build profile: -w ghc-8.10.7 -O1
In order, the following will be built (use -v for more details):
 - readline-1.0.3.0 (lib:readline) (requires download & build)
 - CPL-0.0.9 (exe:cpl) (requires build)
Downloading  readline-1.0.3.0
Downloaded   readline-1.0.3.0
Starting     readline-1.0.3.0 (all, legacy fallback)

Failed to build readline-1.0.3.0. The failure occurred during the configure
step.
Build log ( /Users/electron/.cabal/logs/ghc-8.10.7/rdln-1.0.3.0-9ae95c30.log ):
Warning: readline.cabal:27:32: version operators used. To use version
operators the package needs to specify at least 'cabal-version: >= 1.8'.
Warning: readline.cabal:9:3: Tabs used as indentation at 9:3, 10:3, 12:3,
13:3, 15:3, 16:3
Configuring readline-1.0.3.0...
checking for gcc... /usr/bin/clang
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/bin/clang accepts -g... yes
checking for /usr/bin/clang option to accept ISO C89... none needed
checking for GNUreadline.framework... checking for readline... no
checking for tputs in -lncurses... yes
checking for readline in -lreadline... yes
checking for rl_readline_version... yes
checking for rl_begin_undo_group... no
configure: error: readline not found, so this package cannot be built
See `config.log' for more details.
cabal: Failed to build readline-1.0.3.0 (which is required by exe:cpl from
CPL-0.0.9). See the build log above for details.

electron@diynoMacBook-Pro ~ % 

これでうまくいった

Terminal
electron@diynoMacBook-Pro ~ % cabal get CPL    
Unpacking to CPL-0.0.9/
electron@diynoMacBook-Pro ~ %
  • カレントディレクトリの直下に、「CPL-0.0.9」ディレクトリが作られた。
Terminal
electron@diynoMacBook-Pro ~ % ls CPL-0.0.9
CHANGELOG.markdown  README.markdown     build_bdist_linux.sh    src
COPYING         Setup.hs        misc            windows
CPL.cabal       appveyor.yml        samples
electron@diynoMacBook-Pro ~ % 
  • cdして、cabal install --bindir ~/.cabal/bin --datadir ~/.cabal/share -f -Readlineを実行

( 参考 )
https://mandel59.hateblo.jp/entry/2015/02/02/223147

自分の環境ではreadlineが使えなかったので、-f -Readlineオプションを指定しています。Readlineが使えなくても、Haskelineがかわりに使われるので問題ありませんでした。

Terminal
electron@diynoMacBook-Pro ~ % cd CPL-0.0.9
electron@diynoMacBook-Pro CPL-0.0.9 % 
electron@diynoMacBook-Pro CPL-0.0.9 % cabal install --bindir ~/.cabal/bin --datadir ~/.cabal/share -f -Readline
Wrote tarball sdist to
/Users/electron/CPL-0.0.9/dist-newstyle/sdist/CPL-0.0.9.tar.gz
Resolving dependencies...
Build profile: -w ghc-8.10.7 -O1
In order, the following will be built (use -v for more details):
 - CPL-0.0.9 (exe:cpl) (requires build)
Starting     CPL-0.0.9 (exe:cpl)
Building     CPL-0.0.9 (exe:cpl)
Installing   CPL-0.0.9 (exe:cpl)
Completed    CPL-0.0.9 (exe:cpl)
Symlinking 'cpl' to '/Users/electron/.cabal/bin/cpl'
electron@diynoMacBook-Pro CPL-0.0.9 % 

cplコマンドは、認識されない

Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % cpl --version
zsh: command not found: cpl
electron@diynoMacBook-Pro CPL-0.0.9 %

フルパスで、/Users/electron/.cabal/bin/cplと打つ必要がある

Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % ls /Users/electron/.cabal/bin/cpl
/Users/electron/.cabal/bin/cpl
electron@diynoMacBook-Pro CPL-0.0.9 % 
Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % /Users/electron/.cabal/bin/cpl
Categorical Programming Language (Haskell version)
version 0.0.9

Type help for help

cpl> help
  exit                        exit the interpreter
  quit                        ditto
  bye                         ditto
  edit                        enter editing mode
  simp [full] <exp>           evaluate expression
  show <exp>                  print type of expression
  show object <functor>       print information of functor
  load <filename>             load from file
  set trace [on|off]          enable/disable trace
  reset                       remove all definitions
cpl> 
cpl> bye
electron@diynoMacBook-Pro CPL-0.0.9 %

エイリアスを張る

  • フルパスのコマンドを、cplで叩けるようにする
  • bash_rcに、alias cpl='/Users/electron/.cabal/bin/cpl'を書き込む
Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % vim $HOME/.bash_rc
Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % cat $HOME/.bash_rc

( 省略 )

alias cpl='/Users/electron/.cabal/bin/cpl'
electron@diynoMacBook-Pro CPL-0.0.9 %
  • bash_rcファイルを読み込む
Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % source $HOME/.bash_rc
  • bash_profileに、source ~/.bash_rcを書き込む
Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % vim $HOME/.bash_profile
Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % cat $HOME/.bash_profile
( 省略 )

source ~/.bash_rc
electron@diynoMacBook-Pro CPL-0.0.9 %
Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % source $HOME/.bash_profile
( 省略 )

source ~/.bash_rc
electron@diynoMacBook-Pro CPL-0.0.9 %

cplコマンドでCPL言語のインタプリタを起動できた

Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % cpl
Categorical Programming Language (Haskell version)
version 0.0.9

Type help for help

cpl> help
  exit                        exit the interpreter
  quit                        ditto
  bye                         ditto
  edit                        enter editing mode
  simp [full] <exp>           evaluate expression
  show <exp>                  print type of expression
  show object <functor>       print information of functor
  load <filename>             load from file
  set trace [on|off]          enable/disable trace
  reset                       remove all definitions
cpl> bye
electron@diynoMacBook-Pro CPL-0.0.9 % 
Terminal
electron@diynoMacBook-Pro CPL-0.0.9 % cpl --version
0.0.9
electron@diynoMacBook-Pro CPL-0.0.9 %

CPL言語についてのリファレンス

同じ略語のCPL(Combined Programming Language)とは違います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0