X



: Forth Factor ; 連鎖性言語part 1 0 0 + + !
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん垢版2018/07/11(水) 17:54:06.60ID:c6kW41X9
その他Joy Cat RPL PostScript Minなどなど…
意外なところに組み込まれて何十年もひっそりと動いてたりする、
決して侮れないスタック指向/連鎖性言語について語るスレ

参考サイト:
http://concatenative.org
0004デフォルトの名無しさん垢版2018/07/14(土) 00:06:43.82ID:4AEOp17v
forthスレまだ生きとるやんけ
ここはforth以外について語るか
factorが一番人気なのは分かるが、トヨタではなくホンダ、ドコモではなくauを買ってしまうひねくれものにおすすめのやつ教えてくれ
0005デフォルトの名無しさん垢版2018/07/17(火) 11:33:30.50ID:sqR88BUJ
factorにおけるスタックイフェクト( -- )って何なのでしょう?
単なるコメントじゃなくチェックに使われるってのは分かるんだけどコロン定義の外でもスタックに( -- )とか積めるし試しにコールしてみたらなんかeffectクラスのインスタンスらしいし。
謎すぎる…
0006デフォルトの名無しさん垢版2018/07/19(木) 09:56:23.63ID:7E8V8h95
日本共産党に一票お願いします
0007デフォルトの名無しさん垢版2018/10/08(月) 18:08:53.22ID:ZAXPZgiy
( -- )
確か型情報 
関数の入力になるスタック要素:なし
関数の出力になるスタック要素:なし

( がCore.Syntax.factor に入っていて
) が来るまで読み込んだ内容から型の情報を作り上げる

parse-effect
ってのが処理する実態
0008デフォルトの名無しさん垢版2018/11/16(金) 19:13:25.12ID:dkx8E2i6
>>7
おお、ありがとうございます!
マイナーなのか検索してもそういう情報になかなかたどり着けないんですがどこで知るんですか?
ソース読むしかない?
0009デフォルトの名無しさん垢版2019/01/22(火) 23:27:41.91ID:pmkn6sPa
どうしてFactorのtimesは

  [ "仏の顔も三度まで" print ] 3 times

じゃなくて

  3 [ "何度言わせるんだ!" print ] times

っていう語順なんですかね?
00109垢版2019/02/04(月) 13:47:45.09ID:1xOaElAe
>>9
>どうして

自分で書いたプログラムに使ってみてわかりました。
if や each コンピネータと同じ形でかけますね。なるほど。
0012デフォルトの名無しさん垢版2019/04/14(日) 05:56:09.20ID:PdhWhUtz
コンパクト
0014デフォルトの名無しさん垢版2020/01/28(火) 09:36:47.46ID:gh4ng9dX
Mac版FactorのIDEで日本語等のインライン入力ができるようにしました
しばらく前からできてたんですけど、引数の受け渡しがうまくいかなくて誤魔化してたところの修正を最近行いました

Windows版でもインライン入力ができるようにしたいとは思ってるんですが、取り組む時期は未定です

基本、開発の人では足りてない様子で、直さなくてはならないところ、作らなくてはいけないものがいっぱいあります
みなさんの参加を(少なくとも私が)おまちしております
0015デフォルトの名無しさん垢版2020/11/26(木) 17:59:04.05ID:Vqokk6y+
先週くらいからforth触り始めたけどなにこれパズルみたいでめっちゃおもろい
アプリ作れる気は全くしないが…
0016デフォルトの名無しさん垢版2021/01/12(火) 00:40:27.13ID:XqNkUArk
中の外の人か?
factorはforthをより推し進めた感じだね、リストやワードも普通にスタックに入っちまう原理主義、とても良いと思います
まあforthもxtやリスト先頭addr(と長さ)を陽に取り出して積めば良いんだけど、やはり一段抽象度が落ちるというか

factorの公式配布バイナリを一回落としたけど、展開時に容量が数百MBに膨らむのを目撃してしまい、暫く遊んでそっと消した、、、
そんな俺に貢献する技量はまだないが、もしコアだけのミニマム配布があればfactor弄り回してそのうち、なんてな(他力本願)
0017デフォルトの名無しさん垢版2021/01/12(火) 20:11:37.84ID:6+NIayF5
中の外の人って何だろうと思ったけど、だんだんそんな気がしてきた...

Factorは、コードをみると(似せたから)forthそっくりだけど、中身的にはミニマリストのforthと全然違って、
たぶん自分でLispを作るならこんな風になるんだろうなという構造で、全然forth属ではなくて、「連鎖系言語」
じゃないとくくれない感じです

いま、マルチディスパッチ・総称関数(総称ワード)機構を作ってます
ネタが尽きないのは良いのか悪いのか
今はSwiftの中の人になっているオリジナル作者が続けていれば、そうはなっていなかったと思いますが
0018デフォルトの名無しさん垢版2021/01/17(日) 13:14:11.50ID:16Ro+9sx
factor知らないけforth初心者だけど応援してる
入門初には型無しで困る事って実際そんなに無い(starting forth?)とか書いてるけど、困らなくても型があれば総称関数使えるという利点があるしな
まあリストとかある時点で型はあるんだろうし見込みはありそう

forthのライブラリにはまだ手を出してないけどoopとかも出来るんだっけ、実装が気になってきた
0019デフォルトの名無しさん垢版2021/02/06(土) 04:54:08.31ID:oQfB5lBJ
postscript(gsだけど)がお仲間だと聞いて少し触ってみたけど、これもforthより原理主義かも?
parsing wordを徹底的に避けてるようなので
汎用ライブラリさえ揃えば化けるのでは
ついでにプロットもインタラクティブかつ出版品質というオマケ付き(こっちが本体だけど)
0020デフォルトの名無しさん垢版2021/02/06(土) 05:25:49.69ID:oQfB5lBJ
今まで書かれたソースコードの量は多分cにすら並ぶ超メジャー言語なのになぜかスレすらないps...
0021デフォルトの名無しさん垢版2021/03/08(月) 16:38:06.11ID:H4OoIpXQ
気まぐれに触っただけだけど、/word { … } defだっけ
まともな情報源がadobeの読みにくい巨大pdfしかなくて投げたわ

確かにrationalだけどparsing wordにはストリームから読むという意義もあるしな
逆にストリームから読む必要のないワードまでparsingにするforthの方が筋が悪い?

文字列はs" なんて妙なワードを使わずとも、可変長のセルを積むリテラル( -- w1 w2 ... wn n)を用意して整数スタックに積み、ストア(w1 ... wn n -- c-addr u)すればいいように思うが…
(uはcell . が8の64bit環境なら8 n *です)

いやいや、組み込み用途とか考えると入力によっては整数スタックがすぐ溢れたりするので、ストリームを読み捨てながら直に -- c-addr uを返す方が賢いのか?
そもそも汎用だからと整数スタックに何でも積むのはよろしくないか、積むにしても移植性を考えるならcell .を確かめなきゃならんし
うむ…
0022デフォルトの名無しさん垢版2021/03/11(木) 17:18:34.86ID:ifNxw6Pa
forth周りのHPって公式名乗って保守放棄やら特定の処理系のHPがどこぞの標準と同じスタイルだったり、団体がなんかキナ臭いと思ってたらcomp.lang.forthで中の人暴れてて、やはりか…と
0023デフォルトの名無しさん垢版2021/03/11(木) 19:38:14.16ID:ifNxw6Pa
今はアドレスと文字数を別に持つのが標準のインターフェイスだが、アドレスの先に文字数と文字列を持つcounted stringもForthでは使われてた事があって、なかなか便利だと思う
パスカル文字列ってやつ
countとか変換ワードが残ってるのが名残り
常にひとかたまりなので片割れが迷子にならない

一番罪深いのは特定の文字に出会ったら終了のC流文字列
ヌル文字問題はもちろん読まない限り長さが分からんので文字列が長くなると恐ろしく効率が悪い
0024デフォルトの名無しさん垢版2021/03/26(金) 00:25:36.56ID:iPJYOSOi
今のメモリなら気兼ねなく32bitなり64bitなり文字列長に使えるからPascalStringもアリかもね
ただ例えば3バイトの"foo"に4バイト分文字列長を確保するのか、と考えるとミニマリスト主義な人が多いForth実装者は逆に敬遠しそうではある
0025デフォルトの名無しさん垢版2021/03/29(月) 05:57:28.50ID:T/NVAJfs
俺は何でもブロックに放り込むマン、obsoleteがどうした!

親類のpsも配列文字列float全部dstackに放り込んでるしな
配列は多分アドレス仕舞ってるだけだと思うけど、要素をスタック上に全部展開するのもよくやる

ユニコードは病的な例を除けば32bitに収まるので、utf32を二文字詰めるか、扱いの単純さと余裕も見て64bit cellで扱っても便利かも
主流の言語でも内部表現はシンプルなutf32が多いしね

ネットで主流のutf8は32bitしかないユニコードを複雑怪奇なアルゴリズムで最大17x8bit(暗算できない)にエンコードしてしまうやべー奴なので、c-addrで扱うしかないな…
0026デフォルトの名無しさん垢版2021/03/29(月) 06:06:51.09ID:T/NVAJfs
メジャーなc++ですらutf8用の8bit型まで用意したのに規格も標準ライブラリもバグバグで使い物にならない状況だしな
ウェブでRubyみたいな動的なスクリプト言語が幅を効かせてるのは、この辺の事情だろう
型のサイズが決まってないので、可変長エンコードでも問題ない
0027デフォルトの名無しさん垢版2021/04/05(月) 10:43:38.16ID:i9PX2oQn
ユニコの話題スレにあったなと関連するメーリス来て思い出したので貼り
名前とか晒さないのが2ch的エチケット?一応
興味ある方はどうぞー

| 2021-04-04 01:53:23 replies: アノにマスさん
| proposal - EMIT and non-ASCII values
`------------------------------------------
I don't think this proposal works for extended characters. While `$a4 emit` works for `ä` this explicitly doesn't work (if my understanding is correct) for unicode positions that are multicharacter in UTF8. You have to know at the point of emitting, what the expected coding is.

If we define it as UTF8 then EMIT can know that the byte is part of a multi-byte character, and hold it until it gets the next byte before passing to the operating system, but at the moment I don't believe that Forth 2012 is defined as UTF8, so a conformant system would have to emit that first byte (which I think will have its top bit set) as a character.

For webForth in C (on Arduino) I feed the characters to Serial.write which (I think) treats it as UTF8, but for webForth in Javascript I flip it around and the base primitive is TX!S which puts out a string - TYPE calls this directly, and EMIT passes a 1 character string, TX!S just passes it to the Javascript which is string oriented - I define the stream as UTF8 encoded at initialization. This is also a LOT faster than passing characters individually to a string oriented system anyway.

I'm not suggesting what I've done is the right solution - but I think any proposal understanding by someone with better understanding (than me, or the proposer of this) of how Unicode and UTF8 work before changes are made.
,------------------------------------------
| see: https://forth-standard.org/proposals/emit-and-non-ascii-values
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況