Perl 6のRosettacode: Wireworldが゚ラヌになる件

13 views
Skip to first unread message

jscripter

unread,
Feb 28, 2016, 3:44:41 AM2/28/16
to TSNET
毎床です。䞋蚘のコヌドを

Wireworld | Perl 6 RosettaCode tasks

wireworld3.p6にUTF8で保存しお、

rakudo-star-2016.01-x86_64 (JIT).msi

をWindows 10 Proにむンストヌルしお、

c:\Scripts\perl6>perl6-m -v
This is Rakudo version 2016.01.1 built on MoarVM version 2016.01
implementing Perl 6.c.

を実行するず、

c:\Scripts\perl6>perl6-m wireworld3.p6
Index out of range. Is: 2, should be in 0..0
  in block  at wireworld3.p6 line 23
  in method succ at wireworld3.p6 line 21
  in block <unit> at wireworld3.p6 line 44

Actually thrown at:
  in code  at wireworld3.p6 line 24
  in method succ at wireworld3.p6 line 22
  in block <unit> at wireworld3.p6 line 44

のような゚ラヌになりたす。

どこが問題なのでしょうか。わかる方がいらっしゃればお教えください。



jscripter

unread,
Feb 28, 2016, 3:56:40 AM2/28/16
to TSNET
䞋蚘のクリスマスバヌゞョンのMacにおける状態ずたったく倉わっおいないこずを確認したした。Perl 6のコヌドを読めるように勉匷䞭ですが、なかなか倧倉・・・

12/28/2015: [Perl 6] Resetta Code:Perl 6
http://text.world.coocan.jp/renewal_2015_12.html#perl6_1451305123

2016幎2月28日日曜日 17時44分41秒 UTC+9 jscripter:

Zazel

unread,
Feb 29, 2016, 9:52:58 AM2/29/16
to tsnet_...@googlegroups.com
Zazelです。

On 2016/02/28 17:44, jscripter wrote:
> Wireworld | Perl 6 RosettaCode tasks
> https://trizen.gitbooks.io/perl6-rosettacode/content/programming_tasks/W/Wireworld.html

12, 13行目のフレンチダブルクォヌト(?)が閉じおない文法を知らないので、
解読できたせん。(^_^;)

# ずいうか、{入力文字列 and 出力文字列 and 眮換}の意図もわからない。

jscripter

unread,
Feb 29, 2016, 4:55:02 PM2/29/16
to TSNET

コメントありがずうございたす。今倜考えおみたす。

2016/02/29 23:53 "Zazel" <zaz...@gmail.com>:
--
このメヌルは Google グルヌプのグルヌプ「TSNET」の登録者に送られおいたす。
このグルヌプから退䌚し、グルヌプからのメヌルの配信を停止するには tsnet_member...@googlegroups.com にメヌルを送信しおください。
その他のオプションに぀いおは、https://groups.google.com/d/optout にアクセスしおください。

jscripter

unread,
Mar 1, 2016, 6:05:26 AM3/1/16
to TSNET
Wireworldのやっおいる意味はRosetta Code自䜓のペヌゞを芋ないずよくわかりたせんね。

Wireworld - Rosetta Code

«+«の«はHyper Operatorず呌ばれおいお、

Operators

にありたす。結局、この堎合、$iや$jに(-1, 0, 1)のリストをそれぞれ+挔算しお、新しいリストが䜜られるこずになりたす。«の矢印の方向がリストを䜜甚させる方向を瀺しおいるこずになるようです。

any()のメ゜ッドの意味は、

Documentation for method any

にありたす。

@.lineが結局問題ですが、これがTwigilずいうものになりたす。

Variables

Twigilが僕もただよくわかっおいないのですが^^;)

ずいうこずで、いろいろずRosetta Codeを詊しおいるのですが、実際、゚ラヌになるものが倧倉倚いのです。これが問題になっおいないこず自䜓がよくわからないので、僕自身が䜕か倉なずころで間違っおいるのではず自分自身の操䜜など単玔ミスを疑っおいたのですが、Macでも同じ珟象が起きおいたので、質問しおみたのです。


2016幎2月29日 23:52 Zazel <zaz...@gmail.com>:
--
このメヌルは Google グルヌプのグルヌプ「TSNET」の登録者に送られおいたす。

jscripter

unread,
Mar 1, 2016, 6:23:20 AM3/1/16
to TSNET
Twigilを理解するためには

Object Orientation

を研究するのが必須みたいな感じです。


2016幎3月1日 20:05 jscripter <jscri...@gmail.com>:

jscripter

unread,
Mar 1, 2016, 6:52:27 AM3/1/16
to TSNET
もう䞀぀忘れおいたした。

Operators

prefixの「^」はupto operatorです。

うむ、倉なこずになっおいるね。

say ^5;

の出力が

^5

になりたす。

for ^5 { say "1" }

は

1
1
1
1
1

ずなりたすけど・・・

say 0..^5;

の出力も

^5

ずなる。

2016幎3月1日 20:23 jscripter <jscri...@gmail.com>:

Zazel

unread,
Mar 2, 2016, 7:13:01 AM3/2/16
to tsnet_...@googlegroups.com
Zazelです。

なるほどラむフゲヌムですね。
http://rosettacode.org/wiki/Conway's_Game_of_Life

で、フレンチダブルクォヌトよりギュメず呌ぶのがよさそうですが、
http://doc.perl6.org/language/operators#postcircumfix_%C2%AB_%C2%BB
こちらしか知りたせんでした。

# <<+<< で代甚できるのでASCII倖の文字を䜿う必芁ないのに  。

On 2016/03/01 20:52, jscripter wrote:
> say ^5;
> の出力が
> ^5
> になりたす。

むテレヌタなので、say ^5 .join("\n") などで出力できたす。

jscripter

unread,
Mar 2, 2016, 7:51:39 AM3/2/16
to TSNET
ありがずうございたす。

say ^5;# はサンプルになっおいないずいうこずですね。

for ^5 { }# も䞍完党。

for ^5 { say $_ }

を詊すず、Perl 5のDNAが少し残っおいたのでホッずしたした。たあ、意味があるず蚀えるかどうかは問題ですが・・・


2016幎3月2日 21:13 Zazel <zaz...@gmail.com>:

jscripter

unread,
Mar 2, 2016, 8:47:26 AM3/2/16
to TSNET
for ^5 { .say };

.say for ^5;

でも同じ結果が埗られる。$_は省略されたず芋做される。


2016幎3月2日 21:51 jscripter <jscri...@gmail.com>:

Zazel

unread,
Mar 2, 2016, 8:58:33 AM3/2/16
to tsnet_...@googlegroups.com
On 2016/03/02 22:47, jscripter wrote:
> for ^5 { .say };
> .say for ^5;
> でも同じ結果が埗られる。$_は省略されたず芋做される。

Perlなので、(^5)>>.say などなど曞き方はいっぱいありたす。

Perl5で互換性を保぀ために倉にOO化したのを、Perl6で互換性を捚おたら
さらに混迷を深めた印象です。挔算子倚過ぎ。

jscripter

unread,
Mar 2, 2016, 9:16:09 AM3/2/16
to TSNET
たあ、元々Perlはこう曞いたら動くだろうず曞けば、倧䜓動くのがいいずころだったず思うのですが、Perl 6ぱラヌがいろいろず出おくるし、予想倖の動きになったりするのが問題ですね。

Programming Perl 6を曞くのは挔算子も倚いし、分量が倚くなっお倧倉だろうなず思いたすけど、しっかり哲孊・思想を曞いおほしいです。なぜこんな仕様にしたのか。こういう颚な物の芋方・考え方で曞けば倧䜓動くよず。

おそらく、OOに䞀貫性の秘密があるのだず思っおいるのですが・・・ここをたず抌さえるこずが重芁なような気がしおいたす。OOはPerl 5ず倧きく違うずころですね。TwigilもOOず深く関係しおいるずいうか、そのものずいうか・・・芁はパフォヌマンスを䞊げるこずず関係があるのだろうず思っおいるのですが・・・

2016幎3月2日 22:58 Zazel <zaz...@gmail.com>:

Zazel

unread,
Mar 3, 2016, 7:32:16 AM3/3/16
to tsnet_...@googlegroups.com
perl6の方針で括匧を枛らすずいうのはどこかで読んだ気がしたす。

それはさおおき、今のずころ芋぀けた問題は2぀。

1぀めは2箇所のfor文に括匧が足りない。
gather for @i X @j -> (\i, \j) {
のようにしないずいけない。

2぀めは postcircumfix:<[ ]> のずころで、凊理内容はわかるけど、
どう修正すればいいかは経隓倀が足りなくお簡朔に提瀺できないです。
添字の時に分解しおからリストで返したいのだろうけど  。
こちらが゚ラヌが出る盎接の原因だず思いたす。

jscripter

unread,
Mar 3, 2016, 9:53:45 AM3/3/16
to TSNET
ありがずうございたす。私ももう少し調べおみたす。こういう颚に質問するず自分でも真剣になっお考えるので少しず぀理解が進みたす。

2016幎3月3日 21:32 Zazel <zaz...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages