Recommended
PPTX
PDF
PDF
ODP
PDF
Fork/Join Framework。そしてLambdaへ。
PDF
PDF
C++コンパイラ GCCとClangからのメッセージをお読みください
PDF
Freer Monads, More Extensible Effects
PDF
Lisp Tutorial for Pythonista : Day 3
PDF
Extensible Eff Applicative
PDF
PDF
PDF
PDF
PDF
PPTX
ODP
Real World OCamlを読んでLispと協調してみた
PDF
PPTX
ODP
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PDF
PPTX
PDF
PDF
PDF
PDF
KEY
KEY
KEY
More Related Content
PPTX
PDF
PDF
ODP
PDF
Fork/Join Framework。そしてLambdaへ。
PDF
PDF
C++コンパイラ GCCとClangからのメッセージをお読みください
PDF
Freer Monads, More Extensible Effects
What's hot
PDF
Lisp Tutorial for Pythonista : Day 3
PDF
Extensible Eff Applicative
PDF
PDF
PDF
PDF
PDF
PPTX
ODP
Real World OCamlを読んでLispと協調してみた
PDF
PPTX
ODP
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PDF
PPTX
PDF
PDF
PDF
PDF
KEY
Viewers also liked
KEY
KEY
KEY
KEY
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
PDF
KEY
Coq for Moblie Phone @ ML名古屋
PPTX
PDF
From Coq to Ruby / CoqからRubyへ
PDF
#NGK2012B Excelによる設計書について
PDF
PDF
PDF
PDF
PDF
OCamlでWebアプリケーションを作るn個の方法
PDF
PPTX
PDF
Similar to Sml#探検隊
KEY
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
PDF
Adding simpl GVN path into GHC
PDF
ODP
PDF
PDF
PDF
KEY
PDF
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
PDF
PDF
PDF
PDF
PDF
PDF
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
PDF
Object-Funcational Analysis and design
PDF
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
PDF
PPT
PPT
More from Hiroki Mizuno
KEY
PDF
KEY
「Frama-Cによるソースコード検証」 (mzp)
KEY
20110424 action scriptを使わないflash勉強会
KEY
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
KEY
KEY
KEY
KEY
KEY
KEY
Proove Mark&Sweep GC with Coq
KEY
Sml#探検隊 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 考察
SML#
好き
興味ない
名古屋の人たち
SML
8
14. 15. SML#の特徴
多相レコード
# fun get_x x = #x x;
val get_x = fn : ['a#{x: 'b}, 'b.
'a -> 'b]
# get_x { x = 1, y = 2 };
val it = 1 : int
# get_x { x = 1, y = 2, z = 3 };
val it = 1 : int
10
16. SML#の特徴
Cが呼べる
# val puts = _import "puts" :
string -> int;
val puts = fn : string -> int
# puts "hello";
hello
val it = 10 : int
11
17. 18. 魔改造SML#: cop
# op +;
val it = <fun> : (int, int) -> int
# cop +;
val it = <fun> : int -> int -> int
13
19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 型が分からないと困る
.....
struct
structure MLLex =
MLLexFun(structure Tokens = MLLrVals.Tokens)
structure ParserData =
MLLrVals.ParserData
val makeLexer =
fn s => fn arg =>
LrParser.Stream.streamify (MLLex.makeLexer s arg)
val LrParse = fn (lookahead,lexer,error,arg) =>
(fn (a,b) => (MLLrVals.ParserData.Actions.extract
a,b))
(LrParser.parse {table = ParserData.table,
lexer=lexer,
.....
21
32. 型が分からないと困る
.....
struct
structure MLLex =
MLLexFun(structure Tokens = MLLrVals.Tokens)
??????
structure ParserData =
MLLrVals.ParserData
val makeLexer =
fn s => fn arg =>
LrParser.Stream.streamify (MLLex.makeLexer s arg)
val LrParse = fn (lookahead,lexer,error,arg) =>
(fn (a,b) => (MLLrVals.ParserData.Actions.extract
a,b))
(LrParser.parse {table = ParserData.table,
lexer=lexer,
.....
21
33. 34. 35. 36. LoadFile DatatypeCompilati doBitmapANormal doRTLX86Emit
Elaboration doStaticAnalysis doClosureConversi doRTLX86AsmGen
VALRECOptimizati doInlining toYAANormal doRTLX86Assembl
FundeclElaboration doMVOptimization doYAANormalOpti
TypeInference doFunctionLocalize doStaticAllocation
UncurryOptimizatio doStaticAnalysis doAIGeneration2
PrinterGeneration doInlining doRTLX86Select
MatchCompilation doMVOptimization doRTLX86Stabilize
FFICompilation doFunctionLocalize doRTLRename
RecordCompilation doBitmapCompilati doRTLX86Coloring
37. LoadFile DatatypeCompilati doBitmapANormal doRTLX86Emit
Elaboration doStaticAnalysis doClosureConversi doRTLX86AsmGen
VALRECOptimizati doInlining toYAANormal doRTLX86Assembl
FundeclElaboration doMVOptimization doYAANormalOpti
TypeInference doFunctionLocalize doStaticAllocation
UncurryOptimizatio doStaticAnalysis doAIGeneration2
PrinterGeneration doInlining doRTLX86Select
MatchCompilation doMVOptimization doRTLX86Stabilize
FFICompilation doFunctionLocalize doRTLRename
RecordCompilation doBitmapCompilati doRTLX86Coloring
38. 型推論直後を狙う
Elaboration
VALRECOptimization
FundeclElaboration
TypeInference
UncurryOptimization
24
39. 型推論直後を狙う
Elaboration
VALRECOptimization
FundeclElaboration
TypeInference
UncurryOptimization
24
40. 型推論直後を狙う
Elaboration
VALRECOptimization
FundeclElaboration
型情報のダンプを
TypeInference 追加する
UncurryOptimization
24
41. 宣言の型
src/compiler/typedcalc/main/TypedCalc.ppg.smi
datatype tpdecl =
...
| TPFUNDECL of
{ argTyList:Types.ty list, bodyTy:Types.ty,
funVarInfo:Types.varInfo,
ruleList:{args:tppat list, body:tpexp} list} list
* Loc.loc
| TPPOLYFUNDECL of
Types.btvEnv
* { argTyList:Types.ty list, bodyTy:Types.ty,
funVarInfo:Types.varInfo,
ruleList:{args:tppat list, body:tpexp} list} list
* Loc.loc
| TPVAL of (Types.varInfo * tpexp) list * Loc.loc
25
42. 宣言の型
src/compiler/typedcalc/main/TypedCalc.ppg.smi
datatype tpdecl =
...
型情報
| TPFUNDECL of
{ argTyList:Types.ty list, bodyTy:Types.ty,
funVarInfo:Types.varInfo,
ruleList:{args:tppat list, body:tpexp} list} list
* Loc.loc
| TPPOLYFUNDECL of
Types.btvEnv
* { argTyList:Types.ty list, bodyTy:Types.ty,
funVarInfo:Types.varInfo,
ruleList:{args:tppat list, body:tpexp} list} list
* Loc.loc
| TPVAL of (Types.varInfo * tpexp) list * Loc.loc
25
43. 宣言の型
src/compiler/typedcalc/main/TypedCalc.ppg.smi
datatype tpdecl =
...
型情報
| TPFUNDECL of
{ argTyList:Types.ty list, bodyTy:Types.ty,
funVarInfo:Types.varInfo,
位置情報
ruleList:{args:tppat list, body:tpexp} list} list
* Loc.loc
| TPPOLYFUNDECL of
Types.btvEnv
* { argTyList:Types.ty list, bodyTy:Types.ty,
funVarInfo:Types.varInfo,
ruleList:{args:tppat list, body:tpexp} list} list
* Loc.loc
| TPVAL of (Types.varInfo * tpexp) list * Loc.loc
25
44. 式の型
datatype tpexp =
...
| TPSQLSERVER of
{loc:Loc.loc, resultTy:Types.ty,
schema:Types.ty LabelEnv.map LabelEnv.map,
server:string}
| TPTAPP of
{exp:tpexp, expTy:Types.ty,
instTyList:Types.ty list,
loc:Loc.loc}
| TPVAR of Types.varInfo * Loc.loc
26
45. 式の型
datatype tpexp =
...
| TPSQLSERVER of
{loc:Loc.loc, resultTy:Types.ty,
schema:Types.ty LabelEnv.map LabelEnv.map,
server:string}
| TPTAPP of
{exp:tpexp, expTy:Types.ty,
instTyList:Types.ty list,
loc:Loc.loc}
| TPVAR of Types.varInfo * Loc.loc
型情報
26
46. 式の型
datatype tpexp =
...
| TPSQLSERVER of
{loc:Loc.loc, resultTy:Types.ty,
schema:Types.ty LabelEnv.map LabelEnv.map,
server:string}
| TPTAPP of
{exp:tpexp, expTy:Types.ty,
instTyList:Types.ty list,
loc:Loc.loc}
| TPVAR of Types.varInfo * Loc.loc
型情報 位置情報
26
47. 型の型・位置の型
structure Types = struct
val tyToString : ty -> string
end
structure Loc = struct
...
val fileNameOfPos : pos -> string
val lineOfPos : pos -> int
val colOfPos : pos -> int
end
27
48. 型情報のダンプ
fun outputExpr stream (e : tpexp) =
case e of
TPAPPM {funTy, loc, funExp, argExpList, ...} =>
(annot stream loc funTy;
outputExpr stream funExp;
List.app (outputExpr stream) argExpList)
| TPCASEM {ruleBodyTy, loc, expList, ruleList, ...} =>
(annot stream loc ruleBodyTy;
List.app (outputExpr stream) expList;
List.app (fn x => outputExpr stream (#body x)) ruleList)
| TPCAST (exp, ty, loc) =>
(annot stream loc ty;
outputExpr stream exp)
| TPCONSTANT {loc, ty, ...} =>
annot stream loc ty
| TPDATACONSTRUCT {loc, con, argExpOpt, ...} =>
(annot stream loc (#ty con);
case argExpOpt of
SOME x =>
outputExpr stream x 28
49. | TPERROR =>
()
| TPEXNCONSTRUCT {argExpOpt, exn,loc, ...} =>
(case exn of
EXEXN i =>
annot stream loc (#ty i)
| EXN i =>
annot stream loc (#ty i);
case argExpOpt of
SOME x =>
outputExpr stream x
| NONE =>
())
| TPEXN_CONSTRUCTOR {exnInfo, loc} =>
annot stream loc (#ty exnInfo)
| TPEXEXN_CONSTRUCTOR {exExnInfo, loc} =>
annot stream loc (#ty exExnInfo)
| TPEXVAR (info, loc) =>
annot stream loc (#ty info)
| TPFFIIMPORT {loc, ptrExp:tpexp, stubTy:Types.ty,...} =>
(annot stream loc stubTy;
outputExpr stream ptrExp)
29
50. | | TPFNM {bodyExp, bodyTy, loc, ...} =>
(annot stream loc bodyTy;
outputExpr stream bodyExp)
| TPGLOBALSYMBOL {loc, ty, ...} =>
annot stream loc ty
| TPHANDLE {exnVar, exp, handler, loc} =>
(annot stream loc (#ty exnVar);
outputExpr stream exp;
outputExpr stream handler)
| TPLET {body, decls, loc, tys} =>
(List.app (outputExpr stream) body;
List.app (outputDecl stream) decls
)
| TPMODIFY {elementExp , loc, recordExp, recordTy, ...} =>
(annot stream loc recordTy;
outputExpr stream elementExp;
outputExpr stream recordExp)
| TPMONOLET { binds, bodyExp, loc} =>
(List.app (fn (_,exp) =>
outputExpr stream exp) binds;
outputExpr stream bodyExp)
| TPOPRIMAPPLY {argExp, loc, oprimOp, ...} =>
(annot stream loc (#ty oprimOp);
outputExpr stream argExp)
| TPPOLY {exp, expTyWithoutTAbs, loc, ...} =>
(annot stream loc expTyWithoutTAbs;
outputExpr stream exp)
30
| TPPOLYFNM {bodyExp, bodyTy, loc, ...} =>
51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. Editor's Notes #2 \n #3 Twitter&#x3068;&#x304B;Github&#x306F;&#x3053;&#x3093;&#x306A;&#x30A2;&#x30A4;&#x30B3;&#x30F3;&#x3067;&#x3084;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;\n&#x540D;&#x53E4;&#x5C4B;&#x304B;&#x3089;&#x6C7A;&#x307E;&#x3057;&#x305F;&#x3002;\n #4 ProofGeneral&#x3055;&#x3093;&#x304C;&#x304B;&#x308F;&#x3044;&#x304F;&#x306A;&#x308A;&#x307E;&#x3057;&#x305F;&#x3002;\n&#x30B7;&#x30FC;&#x30EB;&#x304F;&#x3070;&#x3063;&#x3066;&#x307E;&#x3059;&#x3002;\n\n #5 \n #6 &#x30FB;&#x30B9;&#x30BF;&#x30FC;&#x30C8;&#x7CFB;&#x30A4;&#x30D9;&#x30F3;&#x30C8;&#x306B;&#x306E;&#x3063;&#x304B;&#x3063;&#x3066;&#x307F;&#x305F;&#x3002;(33&#x4EBA;)\n&#x30FB;&#x5927;&#x5800;&#x5148;&#x751F;&#x3068;&#x4E0A;&#x91CE;&#x3055;&#x3093;&#x307E;&#x3067;&#x6765;&#x305F;&#x8C6A;&#x83EF;&#x30B9;&#x30D4;&#x30FC;&#x30AB;&#x30FC;\n--\n&#x30FB;&#x65B0;&#x3057;&#x3044;LT&#x30B9;&#x30BF;&#x30A4;&#x30EB;&#x304C;&#x3046;&#x307E;&#x308C;&#x305F;\n #7 &#x30FB;&#x540D;&#x53E4;&#x5C4B;&#x306B;&#x306F;&#x3069;&#x3048;&#x308A;&#x3083;&#x3042;&#x3068;&#x3044;&#x3046;&#x30AB;&#x30D5;&#x30A7;&#x304C;&#x3042;&#x3063;&#x305F;&#x3093;&#x3067;&#x3059;&#x304C;&#x3001;&#x305D;&#x3053;&#x3067;10&#x4EBA;&#x304F;&#x3089;&#x3044;&#x3067;&#x30CF;&#x30C3;&#x30AB;&#x30F3;&#x3084;&#x308A;&#x307E;&#x3057;&#x305F;&#x3002;\n&#x30FB;SML#&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x3092;&#x6539;&#x9020;&#x3059;&#x308B;&#x4F1A;\n&#x30FB;&#x3053;&#x306E;&#x3068;&#x304D;&#x306E;&#x6210;&#x679C;&#x7269;&#x306B;&#x3064;&#x3044;&#x3066;&#x306F;&#x3042;&#x3068;&#x3067;&#x3066;&#x8A71;&#x3057;&#x307E;&#x3059;&#x3002;\n #8 &#x5927;&#x5800;&#x672C;&#x306E;&#x8AAD;&#x66F8;&#x4F1A;\n #9 &#x540D;&#x53E4;&#x5C4B;&#x306E;&#x4EBA;&#x305F;&#x3061;&#x306F;SML#&#x306F;&#x597D;&#x304D;&#x3060;&#x3051;&#x3069;SML&#x306B;&#x306F;&#x8208;&#x5473;&#x306A;&#x3044;\n #10 &#x540D;&#x53E4;&#x5C4B;&#x306E;&#x4EBA;&#x305F;&#x3061;&#x306F;SML#&#x306F;&#x597D;&#x304D;&#x3060;&#x3051;&#x3069;SML&#x306B;&#x306F;&#x8208;&#x5473;&#x306A;&#x3044;\n #11 &#x30FB;&#x304A;&#x304A;&#x307B;&#x308A;&#x5148;&#x751F;&#x306E;&#x5A18;&#x3055;&#x3093;&#x304C;&#x304B;&#x3044;&#x305F;\n&#x30FB;not BSD\n #12 &#x30FB;&#x5168;&#x90E8;&#x306E;&#x30EC;&#x30B3;&#x30FC;&#x30C9;&#x306B;id&#x3068;&#x304B;name&#x3068;&#x304B;&#x3064;&#x3051;&#x3066;&#x3082;&#x5927;&#x4E08;&#x592B;&#x201D;&#x201D;\n #13 \n #14 &#x30FB;OCaml 296,591&#x3001;SML# 152,523&#x3001;GHC 364,766\n&#x30FB;&#x5358;&#x7D14;&#x306A;&#x6BD4;&#x8F03;&#x306F;&#x3067;&#x304D;&#x306A;&#x3044;\n&#x30FB;&#x6539;&#x9020;&#x3057;&#x3084;&#x3059;&#x3044;\n #15 SML&#x306E;op&#x306F;Haskell&#x3084;OCaml&#x306E;&#x4EBA;&#x306B;&#x306F;&#x9055;&#x548C;&#x611F;&#x304C;&#x3042;&#x308B;\ncop = curried operator\n #16 \n #17 \n #18 &#x30FB;&#x30D6;&#x30E9;&#x30A6;&#x30B6;&#x4E0A;&#x3067;&#x8A66;&#x305B;&#x308B;\n&#x30FB;&#x30B5;&#x30F3;&#x30C9;&#x30DC;&#x30C3;&#x30AF;&#x30B9;&#x5185;&#x3067;&#x5B9F;&#x884C;&#x3057;&#x3066;&#x3044;&#x308B;\n&#x30FB;SML#&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x81EA;&#x4F53;&#x306B;&#x306F;&#x3001;&#x7D50;&#x5C40;&#x624B;&#x3092;&#x3044;&#x308C;&#x3066;&#x3044;&#x306A;&#x3044;\n #19 \n #20 &#x30FB;&#x30E1;&#x30E2;&#x5E33;&#x3067;Haskell&#x66F8;&#x3044;&#x3066;&#x3044;&#x305F;&#x4EBA;&#x3092;&#x500B;&#x4EBA;&#x7684;&#x306B;&#x77E5;&#x3063;&#x3066;&#x307E;&#x3059;&#x304C;&#x3001;&#x666E;&#x901A;&#x306E;&#x4EBA;&#x306F;&#x30A8;&#x30C7;&#x30A3;&#x30BF;&#x3092;&#x4F7F;&#x3046;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x3002;\n&#x30FB;&#x4E16;&#x754C;&#x306B;&#x306F;2&#x3064;&#x306E;&#x30A8;&#x30C7;&#x30A3;&#x30BF;&#x304C;&#x3042;&#x308B;&#x3002;&#x3069;&#x3061;&#x3089;&#x304C;&#x597D;&#x304D;&#x3067;&#x3059;&#x304B;\n---\n&#x30FB;emacs: sml-mode\n---\n&#x30FB;Eclipse\n----\n&#x30FB;&#x3088;&#x3093;&#x305F;&#x3055;&#x3093;&#x304C;&#x4F5C;&#x3063;&#x3066;&#x305F;&#x3002;&#x6700;&#x65B0;&#x7248;&#x306E;SML#&#x3067;&#x306F;&#x52D5;&#x304B;&#x306A;&#x3044;&#x3089;&#x3057;&#x3044;&#x306E;&#x3067;&#x3001;&#x4F7F;&#x3044;&#x305F;&#x3044;&#x3072;&#x3068;&#x306F;&#x5F7C;&#x306B;mention&#x3092;&#x9001;&#x308A;&#x307E;&#x3057;&#x3087;&#x3046;&#x3002;\n #21 &#x30FB;&#x30E1;&#x30E2;&#x5E33;&#x3067;Haskell&#x66F8;&#x3044;&#x3066;&#x3044;&#x305F;&#x4EBA;&#x3092;&#x500B;&#x4EBA;&#x7684;&#x306B;&#x77E5;&#x3063;&#x3066;&#x307E;&#x3059;&#x304C;&#x3001;&#x666E;&#x901A;&#x306E;&#x4EBA;&#x306F;&#x30A8;&#x30C7;&#x30A3;&#x30BF;&#x3092;&#x4F7F;&#x3046;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x3002;\n&#x30FB;&#x4E16;&#x754C;&#x306B;&#x306F;2&#x3064;&#x306E;&#x30A8;&#x30C7;&#x30A3;&#x30BF;&#x304C;&#x3042;&#x308B;&#x3002;&#x3069;&#x3061;&#x3089;&#x304C;&#x597D;&#x304D;&#x3067;&#x3059;&#x304B;\n---\n&#x30FB;emacs: sml-mode\n---\n&#x30FB;Eclipse\n----\n&#x30FB;&#x3088;&#x3093;&#x305F;&#x3055;&#x3093;&#x304C;&#x4F5C;&#x3063;&#x3066;&#x305F;&#x3002;&#x6700;&#x65B0;&#x7248;&#x306E;SML#&#x3067;&#x306F;&#x52D5;&#x304B;&#x306A;&#x3044;&#x3089;&#x3057;&#x3044;&#x306E;&#x3067;&#x3001;&#x4F7F;&#x3044;&#x305F;&#x3044;&#x3072;&#x3068;&#x306F;&#x5F7C;&#x306B;mention&#x3092;&#x9001;&#x308A;&#x307E;&#x3057;&#x3087;&#x3046;&#x3002;\n #22 &#x30FB;&#x30E1;&#x30E2;&#x5E33;&#x3067;Haskell&#x66F8;&#x3044;&#x3066;&#x3044;&#x305F;&#x4EBA;&#x3092;&#x500B;&#x4EBA;&#x7684;&#x306B;&#x77E5;&#x3063;&#x3066;&#x307E;&#x3059;&#x304C;&#x3001;&#x666E;&#x901A;&#x306E;&#x4EBA;&#x306F;&#x30A8;&#x30C7;&#x30A3;&#x30BF;&#x3092;&#x4F7F;&#x3046;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x3002;\n&#x30FB;&#x4E16;&#x754C;&#x306B;&#x306F;2&#x3064;&#x306E;&#x30A8;&#x30C7;&#x30A3;&#x30BF;&#x304C;&#x3042;&#x308B;&#x3002;&#x3069;&#x3061;&#x3089;&#x304C;&#x597D;&#x304D;&#x3067;&#x3059;&#x304B;\n---\n&#x30FB;emacs: sml-mode\n---\n&#x30FB;Eclipse\n----\n&#x30FB;&#x3088;&#x3093;&#x305F;&#x3055;&#x3093;&#x304C;&#x4F5C;&#x3063;&#x3066;&#x305F;&#x3002;&#x6700;&#x65B0;&#x7248;&#x306E;SML#&#x3067;&#x306F;&#x52D5;&#x304B;&#x306A;&#x3044;&#x3089;&#x3057;&#x3044;&#x306E;&#x3067;&#x3001;&#x4F7F;&#x3044;&#x305F;&#x3044;&#x3072;&#x3068;&#x306F;&#x5F7C;&#x306B;mention&#x3092;&#x9001;&#x308A;&#x307E;&#x3057;&#x3087;&#x3046;&#x3002;\n #23 &#x9078;&#x629E;&#x80A2;&#x304C;2&#x3064;&#x3042;&#x308B;&#x306A;&#x3089;&#x6BD4;&#x8F03;&#x3057;&#x306A;&#x3044;&#x3068;&#x3044;&#x3051;&#x307E;&#x305B;&#x3093;&#x3002;\n #24 \n #25 &#x30FB;fact&#x3050;&#x3089;&#x3044;&#x306A;&#x3089;&#x307E;&#x3060;&#x3057;&#x3082;&#x30EA;&#x30A2;&#x30EB;&#x306A;&#x30B3;&#x30FC;&#x30C9;&#x3060;&#x3068;&#x578B;&#x304C;&#x308F;&#x304B;&#x3089;&#x306A;&#x304F;&#x306A;&#x3063;&#x3066;&#x3057;&#x307E;&#x3046;&#x3002;\n&#x30FB;&#x3069;&#x3046;&#x3084;&#x3063;&#x3066;&#x3082;&#x7121;&#x7406;&#x306A;&#x3089;&#x307E;&#x3060;&#x8AE6;&#x3081;&#x304C;&#x4ED8;&#x304F;&#x308F;&#x3051;&#x3067;&#x3059;&#x304C;&#x3001;&#x5404;&#x5909;&#x6570;&#x306E;&#x578B;&#x60C5;&#x306F;&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x306F;&#x77E5;&#x3063;&#x3066;&#x308B;&#x3002;\n&#x30FB;&#x306A;&#x306E;&#x3067;&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x3092;&#x6539;&#x9020;&#x3057;&#x3066;&#x3001;&#x305D;&#x306E;&#x60C5;&#x5831;&#x3092;&#x5916;&#x304B;&#x3089;&#x4F7F;&#x3048;&#x308B;&#x3088;&#x3046;&#x306B;&#x3057;&#x307E;&#x3059;&#x3002;\n #26 &#x666E;&#x901A;&#x306F;&#x30BD;&#x30FC;&#x30B9;&#x30B3;&#x30FC;&#x30C9;&#x3092;&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30EB;&#x3057;&#x3066;&#x5B9F;&#x884C;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x3092;&#x751F;&#x6210;&#x3057;&#x307E;&#x3059;&#x3002;\n--\n&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x3092;&#x6539;&#x9020;&#x3057;&#x3066;&#x578B;&#x60C5;&#x5831;&#x3092;&#x30C0;&#x30F3;&#x30D7;&#x3057;&#x305F;annot&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x3082;&#x751F;&#x6210;&#x3059;&#x308B;&#x3088;&#x3046;&#x306B;&#x3057;&#x307E;&#x3059;&#x3002;&#x305D;&#x308C;&#x3092;emacs&#x304B;&#x3089;&#x8AAD;&#x307F;&#x3053;&#x3080;&#x3053;&#x3068;&#x3067;&#x3001;&#x578B;&#x60C5;&#x5831;&#x306E;&#x8868;&#x793A;&#x3092;&#x5B9F;&#x73FE;&#x3057;&#x307E;&#x3059;&#x3002;\n #27 &#x666E;&#x901A;&#x306F;&#x30BD;&#x30FC;&#x30B9;&#x30B3;&#x30FC;&#x30C9;&#x3092;&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30EB;&#x3057;&#x3066;&#x5B9F;&#x884C;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x3092;&#x751F;&#x6210;&#x3057;&#x307E;&#x3059;&#x3002;\n--\n&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x3092;&#x6539;&#x9020;&#x3057;&#x3066;&#x578B;&#x60C5;&#x5831;&#x3092;&#x30C0;&#x30F3;&#x30D7;&#x3057;&#x305F;annot&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x3082;&#x751F;&#x6210;&#x3059;&#x308B;&#x3088;&#x3046;&#x306B;&#x3057;&#x307E;&#x3059;&#x3002;&#x305D;&#x308C;&#x3092;emacs&#x304B;&#x3089;&#x8AAD;&#x307F;&#x3053;&#x3080;&#x3053;&#x3068;&#x3067;&#x3001;&#x578B;&#x60C5;&#x5831;&#x306E;&#x8868;&#x793A;&#x3092;&#x5B9F;&#x73FE;&#x3057;&#x307E;&#x3059;&#x3002;\n #28 SML#&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x3001;&#x3068;&#x3044;&#x3046;&#x304B;&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x306F;&#x8907;&#x6570;&#x306E;&#x30D1;&#x30B9;&#x306B;&#x3088;&#x3063;&#x3066;&#x69CB;&#x6210;&#x3055;&#x308C;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;\nSML#&#x30B3;&#x30F3;&#x30D1;&#x30A4;&#x30E9;&#x306E;&#x5834;&#x5408;&#x3001;&#x3053;&#x3093;&#x306A;&#x611F;&#x3058;&#x306B;&#x306A;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;(&#x3061;&#x3087;&#x3063;&#x3068;&#x5F85;&#x3064;)\n #29 &#x4ECA;&#x56DE;&#x306F;&#x578B;&#x60C5;&#x5831;&#x306E;&#x30C0;&#x30F3;&#x30D7;&#x304C;&#x76EE;&#x7684;&#x306A;&#x306E;&#x3067;&#x3001;&#x5F8C;&#x534A;&#x306E;&#x6700;&#x9069;&#x5316;&#x3084;&#x30B3;&#x30FC;&#x30C9;&#x751F;&#x6210;&#x306F;&#x7121;&#x8996;&#x3057;&#x307E;&#x3059;&#x3002;\n&#x3067;&#x3001;&#x6700;&#x521D;&#x306E;&#x307B;&#x3046;&#x3092;&#x898B;&#x308B;&#x3068;&#x3061;&#x3087;&#x3046;&#x3069;&#x578B;&#x63A8;&#x8AD6;&#x3092;&#x3084;&#x3063;&#x3066;&#x3044;&#x308B;&#x30D1;&#x30B9;&#x304C;&#x898B;&#x3064;&#x304B;&#x308A;&#x307E;&#x3059;&#x3002;\n--\n&#x3053;&#x306E;&#x578B;&#x63A8;&#x8AD6;&#x304C;&#x304A;&#x308F;&#x3063;&#x305F;&#x76F4;&#x5F8C;&#x306B;&#x578B;&#x60C5;&#x5831;&#x3092;&#x30C0;&#x30F3;&#x30D7;&#x3057;&#x3066;&#x3084;&#x308C;&#x3070;&#x3088;&#x3055;&#x305D;&#x3046;&#x3067;&#x3059;&#x3002;\n--\n&#x306A;&#x306E;&#x3067;&#x3053;&#x306E;&#x3042;&#x3068;&#x306B;&#x51E6;&#x7406;&#x3092;&#x8FFD;&#x52A0;&#x3057;&#x3066;&#x3001;&#x30C0;&#x30F3;&#x30D7;&#x3067;&#x304D;&#x308B;&#x3088;&#x3046;&#x306B;&#x3057;&#x307E;&#x3059;&#x3002;\n #30 &#x4ECA;&#x56DE;&#x306F;&#x578B;&#x60C5;&#x5831;&#x306E;&#x30C0;&#x30F3;&#x30D7;&#x304C;&#x76EE;&#x7684;&#x306A;&#x306E;&#x3067;&#x3001;&#x5F8C;&#x534A;&#x306E;&#x6700;&#x9069;&#x5316;&#x3084;&#x30B3;&#x30FC;&#x30C9;&#x751F;&#x6210;&#x306F;&#x7121;&#x8996;&#x3057;&#x307E;&#x3059;&#x3002;\n&#x3067;&#x3001;&#x6700;&#x521D;&#x306E;&#x307B;&#x3046;&#x3092;&#x898B;&#x308B;&#x3068;&#x3061;&#x3087;&#x3046;&#x3069;&#x578B;&#x63A8;&#x8AD6;&#x3092;&#x3084;&#x3063;&#x3066;&#x3044;&#x308B;&#x30D1;&#x30B9;&#x304C;&#x898B;&#x3064;&#x304B;&#x308A;&#x307E;&#x3059;&#x3002;\n--\n&#x3053;&#x306E;&#x578B;&#x63A8;&#x8AD6;&#x304C;&#x304A;&#x308F;&#x3063;&#x305F;&#x76F4;&#x5F8C;&#x306B;&#x578B;&#x60C5;&#x5831;&#x3092;&#x30C0;&#x30F3;&#x30D7;&#x3057;&#x3066;&#x3084;&#x308C;&#x3070;&#x3088;&#x3055;&#x305D;&#x3046;&#x3067;&#x3059;&#x3002;\n--\n&#x306A;&#x306E;&#x3067;&#x3053;&#x306E;&#x3042;&#x3068;&#x306B;&#x51E6;&#x7406;&#x3092;&#x8FFD;&#x52A0;&#x3057;&#x3066;&#x3001;&#x30C0;&#x30F3;&#x30D7;&#x3067;&#x304D;&#x308B;&#x3088;&#x3046;&#x306B;&#x3057;&#x307E;&#x3059;&#x3002;\n #31 \n #32 \n #33 \n #34 &#x30FB;&#x5BA3;&#x8A00;&#x306E;&#x578B;&#x306F;&#x3053;&#x3093;&#x306A;&#x611F;&#x3058;&#x306B;&#x306A;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;\n&#x30FB;&#x30D5;&#x30A9;&#x30F3;&#x30C8;&#x304C;&#x5C0F;&#x3055;&#x304F;&#x3066;&#x307F;&#x306B;&#x304F;&#x3044;&#x3068;&#x601D;&#x3046;&#x306E;&#x3067;&#x3001;&#x307F;&#x306A;&#x3055;&#x3093;&#x306E;&#x30ED;&#x30FC;&#x30AB;&#x30EB;&#x306B;&#x3042;&#x308B;SML#&#x30B3;&#x30FC;&#x30C9;&#x3092;&#x76F4;&#x63A5;&#x898B;&#x3066;&#x3044;&#x305F;&#x3060;&#x3044;&#x3066;&#x3082;&#x7D50;&#x69CB;&#x3067;&#x3059;&#x3002;...&#x3068;&#x3046;&#x305C;&#x3093;&#x30C0;&#x30A6;&#x30F3;&#x30ED;&#x30FC;&#x30C9;&#x3057;&#x3066;&#x3042;&#x308A;&#x307E;&#x3059;&#x3088;&#x306D;?\n&#x30FB;SML#&#x306E;&#x5404;&#x5BA3;&#x8A00;&#x304C;&#x30B3;&#x30F3;&#x30B9;&#x30C8;&#x30E9;&#x30AF;&#x30BF;&#x306B;&#x5BFE;&#x5FDC;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;&#x4E0A;&#x304B;&#x3089;&#x9806;&#x306B;&#x95A2;&#x6570;&#x5BA3;&#x8A00;&#x3001;&#x591A;&#x76F8;&#x306E;&#x95A2;&#x6570;&#x5BA3;&#x8A00;&#x3001;&#x5909;&#x6570;&#x5BA3;&#x8A00;&#x306B;&#x306A;&#x3063;&#x3066;&#x307E;&#x3059;&#x3002;\n---\n&#x30FB;&#x30DD;&#x30A4;&#x30F3;&#x30C8;&#x306F;&#x578B;&#x60C5;&#x5831;&#x3068;&#x4F4D;&#x7F6E;&#x60C5;&#x5831;&#x304C;&#x542B;&#x307E;&#x308C;&#x3066;&#x3044;&#x308B;&#x3068;&#x3044;&#x3046;&#x3053;&#x3068;&#x3067;&#x3059;&#x3002;\n #35 &#x30FB;&#x5BA3;&#x8A00;&#x306E;&#x578B;&#x306F;&#x3053;&#x3093;&#x306A;&#x611F;&#x3058;&#x306B;&#x306A;&#x3063;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;\n&#x30FB;&#x30D5;&#x30A9;&#x30F3;&#x30C8;&#x304C;&#x5C0F;&#x3055;&#x304F;&#x3066;&#x307F;&#x306B;&#x304F;&#x3044;&#x3068;&#x601D;&#x3046;&#x306E;&#x3067;&#x3001;&#x307F;&#x306A;&#x3055;&#x3093;&#x306E;&#x30ED;&#x30FC;&#x30AB;&#x30EB;&#x306B;&#x3042;&#x308B;SML#&#x30B3;&#x30FC;&#x30C9;&#x3092;&#x76F4;&#x63A5;&#x898B;&#x3066;&#x3044;&#x305F;&#x3060;&#x3044;&#x3066;&#x3082;&#x7D50;&#x69CB;&#x3067;&#x3059;&#x3002;...&#x3068;&#x3046;&#x305C;&#x3093;&#x30C0;&#x30A6;&#x30F3;&#x30ED;&#x30FC;&#x30C9;&#x3057;&#x3066;&#x3042;&#x308A;&#x307E;&#x3059;&#x3088;&#x306D;?\n&#x30FB;SML#&#x306E;&#x5404;&#x5BA3;&#x8A00;&#x304C;&#x30B3;&#x30F3;&#x30B9;&#x30C8;&#x30E9;&#x30AF;&#x30BF;&#x306B;&#x5BFE;&#x5FDC;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;&#x4E0A;&#x304B;&#x3089;&#x9806;&#x306B;&#x95A2;&#x6570;&#x5BA3;&#x8A00;&#x3001;&#x591A;&#x76F8;&#x306E;&#x95A2;&#x6570;&#x5BA3;&#x8A00;&#x3001;&#x5909;&#x6570;&#x5BA3;&#x8A00;&#x306B;&#x306A;&#x3063;&#x3066;&#x307E;&#x3059;&#x3002;\n---\n&#x30FB;&#x30DD;&#x30A4;&#x30F3;&#x30C8;&#x306F;&#x578B;&#x60C5;&#x5831;&#x3068;&#x4F4D;&#x7F6E;&#x60C5;&#x5831;&#x304C;&#x542B;&#x307E;&#x308C;&#x3066;&#x3044;&#x308B;&#x3068;&#x3044;&#x3046;&#x3053;&#x3068;&#x3067;&#x3059;&#x3002;\n #36 &#x30FB;(&#x53D7;&#x3051;&#x3066;&#x305F;&#x3089;)&#x30D5;&#x30A9;&#x30F3;&#x30C8;&#x304C;&#x5C0F;&#x3055;&#x304F;&#x3066;&#x307F;&#x306B;&#x304F;&#x3044;&#x3068;&#x601D;&#x3046;&#x306E;&#x3067;&#x3001;&#x307F;&#x306A;&#x3055;&#x3093;&#x306E;&#x30ED;&#x30FC;&#x30AB;&#x30EB;&#x306B;&#x3042;&#x308B;SML#&#x30B3;&#x30FC;&#x30C9;&#x3092;..\n&#x30FB;&#x4ECA;&#x5EA6;&#x306F;&#x5F0F;&#x306B;&#x5BFE;&#x5FDC;&#x3059;&#x308B;datatype&#x3067;&#x3059;&#x3002;&#x4E0A;&#x304B;&#x3089;&#x9806;&#x306B;sqlserver&#x3078;&#x306E;&#x63A5;&#x7D9A;&#x3001;&#x9069;&#x7528;&#x3001;&#x5909;&#x6570;&#x53C2;&#x7167;&#x306B;&#x306A;&#x3063;&#x3066;&#x307E;&#x3059;&#x3002;\n&#x30FB;&#x3053;&#x308C;&#x3082;&#x578B;&#x60C5;&#x5831;&#x3068;&#x4F4D;&#x7F6E;&#x60C5;&#x5831;&#x304C;&#x57CB;&#x3081;&#x8FBC;&#x307E;&#x308C;&#x3066;&#x3044;&#x307E;&#x3059;\n #37 &#x30FB;(&#x53D7;&#x3051;&#x3066;&#x305F;&#x3089;)&#x30D5;&#x30A9;&#x30F3;&#x30C8;&#x304C;&#x5C0F;&#x3055;&#x304F;&#x3066;&#x307F;&#x306B;&#x304F;&#x3044;&#x3068;&#x601D;&#x3046;&#x306E;&#x3067;&#x3001;&#x307F;&#x306A;&#x3055;&#x3093;&#x306E;&#x30ED;&#x30FC;&#x30AB;&#x30EB;&#x306B;&#x3042;&#x308B;SML#&#x30B3;&#x30FC;&#x30C9;&#x3092;..\n&#x30FB;&#x4ECA;&#x5EA6;&#x306F;&#x5F0F;&#x306B;&#x5BFE;&#x5FDC;&#x3059;&#x308B;datatype&#x3067;&#x3059;&#x3002;&#x4E0A;&#x304B;&#x3089;&#x9806;&#x306B;sqlserver&#x3078;&#x306E;&#x63A5;&#x7D9A;&#x3001;&#x9069;&#x7528;&#x3001;&#x5909;&#x6570;&#x53C2;&#x7167;&#x306B;&#x306A;&#x3063;&#x3066;&#x307E;&#x3059;&#x3002;\n&#x30FB;&#x3053;&#x308C;&#x3082;&#x578B;&#x60C5;&#x5831;&#x3068;&#x4F4D;&#x7F6E;&#x60C5;&#x5831;&#x304C;&#x57CB;&#x3081;&#x8FBC;&#x307E;&#x308C;&#x3066;&#x3044;&#x307E;&#x3059;\n #38 &#x30FB;&#x578B;&#x306F;tyToString&#x3067;&#x6587;&#x5B57;&#x5217;&#x306B;&#x3067;&#x304D;&#x308B;\n&#x30FB;&#x4F4D;&#x7F6E;&#x60C5;&#x5831;&#x306F;lineOfPos&#x3067;&#x884C;&#x756A;&#x53F7;&#x3001;colOfPos&#x3067;&#x5217;&#x756A;&#x53F7;&#x304C;&#x3068;&#x308C;&#x308B;\n #39 &#x30FB;&#x3053;&#x308C;&#x3067;&#x60C5;&#x5831;&#x306F;&#x305D;&#x308D;&#x3063;&#x305F;&#x306E;&#x3067;&#x30C0;&#x30F3;&#x30D7;&#x3059;&#x308B;&#x30B3;&#x30FC;&#x30C9;&#x3092;&#x304C;&#x3057;&#x304C;&#x3057;&#x66F8;&#x3044;&#x3066;&#x3044;&#x304D;&#x307E;&#x3059;&#x3002;\n&#x30FB;&#x57FA;&#x672C;&#x7684;&#x306B;tpdecl&#x3068;tpexp&#x3092;&#x306A;&#x3081;&#x3066;&#x3044;&#x304F;&#x30B3;&#x30FC;&#x30C9;&#x306B;&#x306A;&#x308A;&#x307E;&#x3059;\n #40 \n #41 \n #42 &#x30FB;&#x5E38;&#x306B;&#x30C0;&#x30F3;&#x30D7;&#x3059;&#x308B;&#x306E;&#x3082;&#x5FAE;&#x5999;&#x306A;&#x306E;&#x3067;&#x3001;&#x30B9;&#x30A4;&#x30C3;&#x30C1;&#x3067;&#x5207;&#x308A;&#x66FF;&#x3048;&#x308C;&#x308B;&#x3088;&#x3046;&#x306B;&#x3059;&#x308B;\n #43 \n #44 \n #45 \n #46 &#x30FB;camlspotter&#x3063;&#x307D;&#x304F;&#x3057;&#x305F;&#x3044;\n&#x30FB;&#x591A;&#x76F8;&#x30EC;&#x30B3;&#x30FC;&#x30C9;&#x306E;&#x578B;&#x304C;&#x3046;&#x307E;&#x304F;&#x6587;&#x5B57;&#x5217;&#x5316;&#x3067;&#x304D;&#x306A;&#x3044;\n #47 &#x3053;&#x308C;&#x3067;&#x307F;&#x306A;&#x3055;&#x3093;&#x3082;SML#&#x3092;&#x6539;&#x9020;&#x3057;&#x305F;&#x304F;&#x306A;&#x3063;&#x305F;&#x3068;&#x601D;&#x3046;&#x306E;&#x3067;&#x3001;&#x3044;&#x304F;&#x3064;&#x304B;&#x958B;&#x767A;tips&#x3092;&#x7D39;&#x4ECB;&#x3057;&#x3066;&#x304A;&#x308F;&#x308D;&#x3046;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x3002;\n #48 \n #49 &#x6700;&#x8FD1;&#x3001;Mac&#x304C;&#x3068;&#x308C;&#x3066;OS X&#x306E;&#x307F;&#x306B;&#x306A;&#x3063;&#x305F;&#x3068;&#x304B;&#x305D;&#x3046;&#x3044;&#x3046;&#x7D30;&#x304B;&#x3044;&#x3053;&#x3068;&#x306F;&#x8A31;&#x3057;&#x3066;&#x304F;&#x3060;&#x3055;&#x3044;&#x3002;\n64bit&#x3067;&#x30D3;&#x30EB;&#x30C9;&#x3067;&#x304D;&#x306A;&#x3044;&#x308F;&#x3051;&#x3058;&#x3083;&#x306A;&#x3044;&#x3093;&#x3067;&#x3059;&#x304C;&#x3001;&#x307E;&#x3042;&#x3001;&#x3044;&#x308D;&#x3044;&#x308D;&#x3068;&#x9762;&#x5012;&#x306A;&#x306E;&#x3067;&#x3001;&#x3044;&#x308D;&#x3044;&#x308D;&#x8A66;&#x3059;&#x3068;&#x304D;&#x306F;Ubuntu&#x306E;&#x307B;&#x3046;&#x304C;&#x697D;&#x3067;&#x3059;&#x3002;\n #50 \n