SeijiWiki
hyperlink仕様まとめ
の編集
Top
/ hyperlink仕様まとめ
-- 雛形とするページ --
???±??¢Ã???Ñ??¢±
Adsense Arbitrage Contest Beating Major Adsense Arbitragers Along at the Game
BracketName
Farming Recommendations And Traveler's Bag For Incredible Gold
FormattingRules
FrontPage
Help
hyperlink仕様まとめ
InterWiki
InterWikiName
InterWikiSandBox
LINK
MenuBar
PaperWriting
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
QuickTimeInstaller
RecentDeleted
SandBox
SLIM callback関連 メモ
SLIM時間計測
TopPage
uniq
vista - ubuntu8.04(on VMware)間での共有フォルダ設定
Vistaで自動シャットダウン
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
ノート
ラウンジ
研究日誌とうめき
研究日誌とうめき_
研究日誌とつぶやき
研究日誌とぼやき
実験TA シフト表
卒論
卒論タイトル
卒論概要
読み物
[[研究日誌とうめき]] 随時更新 #contents *hyperlinkについて [#k57b3ddc] ***概要 [#g5b6a8f4] -hyperlinkアトム(⊂ unaryアトム)によってhyperlinkを表現する --ファンクタ-ファンクタ間に関係を持たせることで、集合その他もろもろを表現できるようにする -略称:hlink, hl ***用語など [#ke4ce032] -型 --hyperlinkはhlink型(⊂ unary型) --hlink型はさらにname型, coname型に分かれる ---name型アトムのファンクタ : !1, !2, ... ---coname型アトムのファンクタ : !-1, !-2, ... ---nameの集合によってハイパーリンクを表現する ---conameはハイパーリンクに名前や属性を持たせるための構造(属性を持たせる機能は実装未定 2010/10/11現在) -併合、マージなど --ハイパーリンク同士を接続する(= hyperlinkの集合を併合する) *インストール [#pf1ceb9f] ***コンパイラ側 [#d2855bca] -最新版のJava処理系をCVSからインストール ***ランタイム側 [#cbb81141] -subversionからbranches/hyperlink/slimをチェックアウト -通常のslimと同じ手順でインストール *実行 [#xd27dd06] ***コンパイラ側 [#c12a4547] ex. lmntal --slimcode --hl hoge.lmn > hoge.il -現状、hyperlinkはSLIMでのみ(--slimcodeが必要)使用可能 -- --hl : hyperlinkの使用と、[[同名な型付きプロセス文脈構文>研究日誌とうめき#fb32f670]]を許す -- --hl-opt : 同名の型付きプロセス文脈を利用した最適化モード --- 中間命令findproccxtが挿入される --- ガードに自動的にhlink制約を挿入ことで、ground対groundの構造比較をファンクタ対ファンクタで済ませるようにしている ***ランタイム側 [#k65f604a] ex. slim --hl hoge.il - ハイパーリンクを使うためには--hlオプションが必要 -- --hl : ハイパーリンクの使用を許可(コンパイラ側で--hl-optが指定されている場合には最適化モードで実効) --- ndモード未対応 -- --showhl : hyperlinkの詳細出力 *演算子・制約など [#h8616a82] ***hyperlink生成 [#qf4e2ed4] -hyperlinkの生成は、new制約によってガードで行なう hoge. hoge :- new($h) | a($h), b($h). *--> a('!1'), b('!1'). --オプションとして、make制約で任意のidのhyperlinkを生成できる --ただし、すでにnew制約で生成されたhyperlinkに限る hoge, fuga(3). hoge :- make(2, $h) | a($h).//makeの第一引数にidを入れる fuga(F):- make(F, $h) | b($h). *--> a('!2'), b('!3'). ---まだ生成されていないid、または第一引数がintでない場合はFALSE ***型制約 [#o5798f67] -hlink($x), name($x), coname($x)の3種類 a('!1'). a($x) :- hlink($x) b($x). *--> b('!1'). ***併合 [#t9ee130b] -併合はボディで行なう -演算子 "><" a('!1'), b('!2'). a($x), a($y) :- $x \= $y | a($x), b($y), $x >< $y. --$xと$yが異なる集合に属しているならば併合する、というルール ---属性付き変数を実装したならば、and, orの2種類の併合を用意する必要がある ---">+<", ">*<"とか?"><"はどちらかと同じ意味にするとか? ***要素数取得 [#hccaceb6] -numhyperlinkの接続先の数(=集合内の要素数)を数える a('!1'), b('!1'). a($h) :- $n = num($h) | number($n). *--> b('!1'), number(2). --こんな使い方も a('!1'). a($h) :- $n = num($h), $n < 5 | a($h), a($h). *--> a('!1'), a('!1'), a('!1'), a('!1'), a('!1'). --あるいは flag('!1'), a('!1'), a('!1'), a('!1'), a('!1'). a($h) :- hlink($h) | . flag($h) :- $n = num($h), $n =:= 1 | ok. *--> ok. // a('!1')が全て無くなった後にokを生成 ---つまり膜の否定条件を使わなくても、特定のアトムが無いことを判定できる ***応用:変数への値の束縛を表現 [#ad26a6e1] -ハイパーリンクに値を直接束縛する機能は無いので、例えば以下のようにして表現する a(!1), b(!1), n(!1,5). -- !1というハイパーリンクに、5という値を持たせたところ &br;&br; ---- (以下は雑記、仕様が未定、未実装、実装してみたけど動作保証しないものなど) -2010-10-21 --findproccxt挿入した場合は、ガードでの等価判定を除きたい --%%hyperlink専用のプロセス文脈記法みたいなのを入れた場合には、%% a($x), a($y) --%%書いたら$xと$yは否定条件をつけるまでもなく別集合であるとするほうがいいかな?%% ---よく考えたら却下。併合されたされてないに関わらず適用させたいルールを書きたい場合がありそう -比較(hlink同士) =:a($x), b($y) :- $x === $y | ... (≠:a($x), b($y) :- $x \== $y | ...) -対応関係 name->co-name取得:a($h) :- getconame($x) | a($h). co-name->name取得:a($h) :- getname($x) | a($h). *TODO・MEMO [#fac18f87] -memo --setconame derefatom [3, 1, 0] isname [3] setconame [4, 3] --getconame derefatom [2, 1, 0] isname [2] getconame [3, 2] --hasconame derefatom [2, 1, 0] isname [2] nhasconame [2] --nhasconame derefatom [2, 1, 0] isname [2] nhasconame [2] -memo2 : coname管理 --conameを持たないname[h]->parent = h --conameを持つname[h]->parent = h * -1 -併合 name-name :a($x), b($y) :- $h = $x >< $y | a($h), b($h). co-name-co-name:未定 name-co-name :未定:">>"とか? ***nd対応 [#v2382d86] -ファンクタ管理をndに対応させる方法は置いておく -ガードでシンボルアトム生成 --そのうちTODO:commitで作業配列をコピーするところが正しく行なわれていない ***その他 [#hb9289d6] -LMN_FUNCTOR_ATTRを追加、作業配列にファンクタIDを直接埋め込むときに使う --ガードでアトム用の領域を確保することを避けるため(避けなくても生成することはできるが、気持ち的に)
タイムスタンプを変更しない
[[研究日誌とうめき]] 随時更新 #contents *hyperlinkについて [#k57b3ddc] ***概要 [#g5b6a8f4] -hyperlinkアトム(⊂ unaryアトム)によってhyperlinkを表現する --ファンクタ-ファンクタ間に関係を持たせることで、集合その他もろもろを表現できるようにする -略称:hlink, hl ***用語など [#ke4ce032] -型 --hyperlinkはhlink型(⊂ unary型) --hlink型はさらにname型, coname型に分かれる ---name型アトムのファンクタ : !1, !2, ... ---coname型アトムのファンクタ : !-1, !-2, ... ---nameの集合によってハイパーリンクを表現する ---conameはハイパーリンクに名前や属性を持たせるための構造(属性を持たせる機能は実装未定 2010/10/11現在) -併合、マージなど --ハイパーリンク同士を接続する(= hyperlinkの集合を併合する) *インストール [#pf1ceb9f] ***コンパイラ側 [#d2855bca] -最新版のJava処理系をCVSからインストール ***ランタイム側 [#cbb81141] -subversionからbranches/hyperlink/slimをチェックアウト -通常のslimと同じ手順でインストール *実行 [#xd27dd06] ***コンパイラ側 [#c12a4547] ex. lmntal --slimcode --hl hoge.lmn > hoge.il -現状、hyperlinkはSLIMでのみ(--slimcodeが必要)使用可能 -- --hl : hyperlinkの使用と、[[同名な型付きプロセス文脈構文>研究日誌とうめき#fb32f670]]を許す -- --hl-opt : 同名の型付きプロセス文脈を利用した最適化モード --- 中間命令findproccxtが挿入される --- ガードに自動的にhlink制約を挿入ことで、ground対groundの構造比較をファンクタ対ファンクタで済ませるようにしている ***ランタイム側 [#k65f604a] ex. slim --hl hoge.il - ハイパーリンクを使うためには--hlオプションが必要 -- --hl : ハイパーリンクの使用を許可(コンパイラ側で--hl-optが指定されている場合には最適化モードで実効) --- ndモード未対応 -- --showhl : hyperlinkの詳細出力 *演算子・制約など [#h8616a82] ***hyperlink生成 [#qf4e2ed4] -hyperlinkの生成は、new制約によってガードで行なう hoge. hoge :- new($h) | a($h), b($h). *--> a('!1'), b('!1'). --オプションとして、make制約で任意のidのhyperlinkを生成できる --ただし、すでにnew制約で生成されたhyperlinkに限る hoge, fuga(3). hoge :- make(2, $h) | a($h).//makeの第一引数にidを入れる fuga(F):- make(F, $h) | b($h). *--> a('!2'), b('!3'). ---まだ生成されていないid、または第一引数がintでない場合はFALSE ***型制約 [#o5798f67] -hlink($x), name($x), coname($x)の3種類 a('!1'). a($x) :- hlink($x) b($x). *--> b('!1'). ***併合 [#t9ee130b] -併合はボディで行なう -演算子 "><" a('!1'), b('!2'). a($x), a($y) :- $x \= $y | a($x), b($y), $x >< $y. --$xと$yが異なる集合に属しているならば併合する、というルール ---属性付き変数を実装したならば、and, orの2種類の併合を用意する必要がある ---">+<", ">*<"とか?"><"はどちらかと同じ意味にするとか? ***要素数取得 [#hccaceb6] -numhyperlinkの接続先の数(=集合内の要素数)を数える a('!1'), b('!1'). a($h) :- $n = num($h) | number($n). *--> b('!1'), number(2). --こんな使い方も a('!1'). a($h) :- $n = num($h), $n < 5 | a($h), a($h). *--> a('!1'), a('!1'), a('!1'), a('!1'), a('!1'). --あるいは flag('!1'), a('!1'), a('!1'), a('!1'), a('!1'). a($h) :- hlink($h) | . flag($h) :- $n = num($h), $n =:= 1 | ok. *--> ok. // a('!1')が全て無くなった後にokを生成 ---つまり膜の否定条件を使わなくても、特定のアトムが無いことを判定できる ***応用:変数への値の束縛を表現 [#ad26a6e1] -ハイパーリンクに値を直接束縛する機能は無いので、例えば以下のようにして表現する a(!1), b(!1), n(!1,5). -- !1というハイパーリンクに、5という値を持たせたところ &br;&br; ---- (以下は雑記、仕様が未定、未実装、実装してみたけど動作保証しないものなど) -2010-10-21 --findproccxt挿入した場合は、ガードでの等価判定を除きたい --%%hyperlink専用のプロセス文脈記法みたいなのを入れた場合には、%% a($x), a($y) --%%書いたら$xと$yは否定条件をつけるまでもなく別集合であるとするほうがいいかな?%% ---よく考えたら却下。併合されたされてないに関わらず適用させたいルールを書きたい場合がありそう -比較(hlink同士) =:a($x), b($y) :- $x === $y | ... (≠:a($x), b($y) :- $x \== $y | ...) -対応関係 name->co-name取得:a($h) :- getconame($x) | a($h). co-name->name取得:a($h) :- getname($x) | a($h). *TODO・MEMO [#fac18f87] -memo --setconame derefatom [3, 1, 0] isname [3] setconame [4, 3] --getconame derefatom [2, 1, 0] isname [2] getconame [3, 2] --hasconame derefatom [2, 1, 0] isname [2] nhasconame [2] --nhasconame derefatom [2, 1, 0] isname [2] nhasconame [2] -memo2 : coname管理 --conameを持たないname[h]->parent = h --conameを持つname[h]->parent = h * -1 -併合 name-name :a($x), b($y) :- $h = $x >< $y | a($h), b($h). co-name-co-name:未定 name-co-name :未定:">>"とか? ***nd対応 [#v2382d86] -ファンクタ管理をndに対応させる方法は置いておく -ガードでシンボルアトム生成 --そのうちTODO:commitで作業配列をコピーするところが正しく行なわれていない ***その他 [#hb9289d6] -LMN_FUNCTOR_ATTRを追加、作業配列にファンクタIDを直接埋め込むときに使う --ガードでアトム用の領域を確保することを避けるため(避けなくても生成することはできるが、気持ち的に)
テキスト整形のルールを表示する