2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mindの小技 「複写」~スタックトップの値を2つにする~

Posted at

はじめに

日本語プログラミング言語Mindの小技「複写」について説明したいと思います。

対象読者

日本語プログラミング言語Mindのユーザー、または日本語プログラミング言語に興味のある方

この小技に関連するMind言語マニュアル

この小技に関連するMind言語仕様の記述はMind8プログラミングマニュアルに記載があります。
11 スタック操作
スタック操作語
複写

構文=<データ>を 複写 → <データ>、<データ>

 スタックにあるデータの複製をとるのに使用する。主に、同じデータについて2つの処理を施したい場合に用いる。次がその例である。

二色で表示とは (文字列 → ・)
    複写し
      赤色表示し 改行し
      黄色表示し 改行すること。

本機能(本記事)は、下記のバージョンに対応しています。Mind8のLinux版も対応していると思いますが、本記事では特に検証を行っておりません。

対応バージョン

■Mind7 ■Mind8 ■Mind9
■Windows版 □Linux版

小技の解説

「複写」はスタック志向言語Forthの流れを汲む日本語プログラミング言語Mindの特徴的な機能です。

スタックトップにある値をPOPしてPUSHしてPUSHして2つ分にしてから、同じ値に対して別の処理をしてくださいねという機能です。

処理単語の引数に相当する値は1つを想定して、処理単語内で複写することにより2重化し、同じ値に対して異なる処理を行うようなロジックに使えます。ローカル変数に代入してから処理するのとほぼいっしょとも言えますが、記述も短くなりMindのランタイム的にはこちらのがより軽い実装となります。

Mindプログラムソース

doublepush.src
告白は 表示と 等価。

複写して愛を告白するとは (文字列 → ・)
    複写して、
    告白し 「と、」を 告白し 改行し、
    告白し 「と2回言いました。」を 告白し 改行すること。


変数に代入して愛を告白するとは (文字列 → ・)
        愛は 文字列情報
    愛に 入れ、
    愛を 告白し 「と、」を 告白し 改行し、
    愛を 告白し 「と2回言いました。」を 告白し 改行すること。


メインとは (・ → ・)
    「愛している」を 複写して愛を告白し、
    「愛している」を 変数に代入して愛を告白すること。 

ちょっと例としては、スタックトップの値を加工はしていないのでいまいちですが、ローカル変数を使った場合との記述の違いについてはご理解いただきやすいかなとも思います。

コンパイル結果

ではコンパイルしてみます。下位ライブラリはfileを指定します。

Mind9

下図はMind9βです。

C:\developments\vscode\mind9>mind doublepush file   

日本語プログラミング言語 Mind Version 8.11 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. C:\mind9-beta\mind9-beta\bin\mindex.exe --> doublepush.exe

Mind8

C:\developments\vscode\mind9>mind doublepush file

日本語プログラミング言語 Mind Version 8.07 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindex.exe --> doublepush.exe

Mind7

C:\developments\vscode\mind9>mind doublepush file
日本語プログラミング言語 Mind Version 7.5 for Windows
          Copyright(C) 1985-2004 Scripts Lab. Inc.
          Single user license.  Serial No:********
コンパイル中 - 終了
Coping.. C:\mind7\bin\mindexec.exe -> doublepush.exe

実行結果

つづいて実行してみます。
Mind7の結果です。記述は割愛していますがMind8/9βも同じです。

C:\developments\vscode\mind9>doublepush
愛していると、
愛していると2回言いました。
愛していると、
愛していると2回言いました。

C:\developments\vscode\mind9>

参考情報

この小技「複写」を使った記述例の記事はまだないようです。見つけたら教えてください。

おわりに

いかがでしたでしょうか?なにかの参考になれば幸いです。2025年は日本語プログラミング言語Mind生誕40周年です。

本記事シリーズのご紹介

本記事シリーズ「日本語プログラミング言語Mindの小技」は「日本語プログラミング言語Mind生誕40周年プロジェクト」の一環です。

興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできますよ。

Mindプログラミングマニュアル(基本文法)ページから気になるお題の構文を選んで、この記事のようにサンプル実装実行してQiitaにアウトプットしてみましょう!

筆者はMind7/8/9βで検証しておりますが、もちろんMind8だけでもじゅうぶんです。またお題が既存記事とかぶるのはまったく問題ありません。同じお題でみなさまの多様斬新なサンプルをお待ちしております:grinning:

面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう:relaxed:

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?