SML#探検隊
 @mzp

   1
@mzp

 2
おしらせ




 3
おしらせ




 3
名古屋におけるSML#熱の高
      まり
 元々はOCaml/Coqユー
 ザが多かった

 1年ぐらい前からSML#熱
 が高まりつつある
       4
スタートSML# 1


    Text




     5
スタートSML# 1


  LT発表者
      Text




        5
スタートSML# 2
a.k.a. SML# Hackathon




          6
名古屋SML読書会
        2回で消滅




    7
名古屋SML読書会
        2回で消滅

  主催者




    7
考察




名古屋の人たち



          8
考察
               SML#
          好き




名古屋の人たち



          8
考察
               SML#
          好き

          興味ない


名古屋の人たち
               SML

          8
SML#の特徴

マスコットがかわいい




      9
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
SML#の特徴

          Cが呼べる
# val puts = _import "puts" :
string -> int;
val puts = fn : string -> int
# puts "hello";
hello
val it = 10 : int



                11
SML#の特徴

コンパイラがコンパクト
400000


300000


200000


100000


     0
         ghc   OCaml   SML#

               12
魔改造SML#: cop

# op +;
val it = <fun> : (int, int) -> int

# cop +;
val it = <fun> : int -> int -> int




                13
魔改造SML#: annot
型情報の表示

詳しくは後述




      14
魔改造SML#:
LLVM(開発中)

  ↓開発中



 @chunjp
    15
Try SML#
http://proofcafe.org/trysmlsharp




               16
SML#+annotの紹介



      17
エディタの紹介
どのエディタが好きですか?
     or




          18
エディタの紹介
どのエディタが好きですか?
         or
 Emacs


              18
エディタの紹介
どのエディタが好きですか?
         or
 Emacs             Eclipse


              18
エディタの紹介
どのエディタが好きですか?
         or
 Emacs               Eclipse

                   @keita44_f4

              18
Emacs v.s. Eclipse




        19
Emacs v.s. Eclipse




        19
Emacsだと型が分からない

fun fact n =
  if n = 0 then
    1
  else
    n * fact (n - 1)

          20
Emacsだと型が分からない

fun fact n =
  if n = 0 then
    1           この型は?
  else
    n * fact (n - 1)

         20
型が分からないと困る
.....
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
型が分からないと困る
.....
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
改造の方針

foo.sml   SML#コンパイラ   a.out




              22
改造の方針

foo.sml   SML#コンパイラ     a.out




                      foo.annot




              22
改造の方針

foo.sml   SML#コンパイラ     a.out




                      foo.annot




              22
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
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
型推論直後を狙う
    Elaboration


VALRECOptimization


FundeclElaboration


  TypeInference


UncurryOptimization
                  24
型推論直後を狙う
    Elaboration


VALRECOptimization


FundeclElaboration


  TypeInference


UncurryOptimization
                  24
型推論直後を狙う
    Elaboration


VALRECOptimization


FundeclElaboration
                       型情報のダンプを
  TypeInference          追加する


UncurryOptimization
                  24
宣言の型
  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
宣言の型
  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
宣言の型
  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
式の型
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
式の型
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
式の型
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
型の型・位置の型
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
型情報のダンプ
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
 | 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
|  | 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, ...} =>
スイッチ
src/compiler/control/main/Control.ppg

val annot = ref false
val switchTable : switchTable =
[  ....
 ("annot", BoolSwitch annot)
]
src/compiler/toplevel2/main/Top.sml

if ! Control.annot then
  Annot.dump tpcalc
else
  ()

                             31
使い方
$ ls
fact.sml

$ smlsharp -d annot=yes fact.sml

$ ls
a.out fact.sml fact.annot

               32
EmacsLisp




    33
デモ




34
今後の目標
変数の参照元ジャンプ

多相レコードの表示




     35
開発Tips
--enable-fast-build
は意味がない


make -jは失敗する

         36
開発Tips for Windows
Mingwでのビルドは無理




        37
開発Tips for Windows
Mingwでのビルドは無理


 Ubuntu(32bit)を使おう


        37
開発Tips for MacOS X
64bitでのビルドは難しい




        38
開発Tips for MacOS X
64bitでのビルドは難しい


 Ubuntu(32bit)を使おう


        38
まとめ
今、SML#がアツい

SML#を改造するの楽しい

型情報を表示する拡張をいれた
(Emacsのみ)

改造するときはLinuxでやろう

            39

Sml#探検隊

Editor's Notes

  • #2 \n
  • #3 Twitter&amp;#x3068;&amp;#x304B;Github&amp;#x306F;&amp;#x3053;&amp;#x3093;&amp;#x306A;&amp;#x30A2;&amp;#x30A4;&amp;#x30B3;&amp;#x30F3;&amp;#x3067;&amp;#x3084;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x540D;&amp;#x53E4;&amp;#x5C4B;&amp;#x304B;&amp;#x3089;&amp;#x6C7A;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3002;\n
  • #4 ProofGeneral&amp;#x3055;&amp;#x3093;&amp;#x304C;&amp;#x304B;&amp;#x308F;&amp;#x3044;&amp;#x304F;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3002;\n&amp;#x30B7;&amp;#x30FC;&amp;#x30EB;&amp;#x304F;&amp;#x3070;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n\n
  • #5 \n
  • #6 &amp;#x30FB;&amp;#x30B9;&amp;#x30BF;&amp;#x30FC;&amp;#x30C8;&amp;#x7CFB;&amp;#x30A4;&amp;#x30D9;&amp;#x30F3;&amp;#x30C8;&amp;#x306B;&amp;#x306E;&amp;#x3063;&amp;#x304B;&amp;#x3063;&amp;#x3066;&amp;#x307F;&amp;#x305F;&amp;#x3002;(33&amp;#x4EBA;)\n&amp;#x30FB;&amp;#x5927;&amp;#x5800;&amp;#x5148;&amp;#x751F;&amp;#x3068;&amp;#x4E0A;&amp;#x91CE;&amp;#x3055;&amp;#x3093;&amp;#x307E;&amp;#x3067;&amp;#x6765;&amp;#x305F;&amp;#x8C6A;&amp;#x83EF;&amp;#x30B9;&amp;#x30D4;&amp;#x30FC;&amp;#x30AB;&amp;#x30FC;\n--\n&amp;#x30FB;&amp;#x65B0;&amp;#x3057;&amp;#x3044;LT&amp;#x30B9;&amp;#x30BF;&amp;#x30A4;&amp;#x30EB;&amp;#x304C;&amp;#x3046;&amp;#x307E;&amp;#x308C;&amp;#x305F;\n
  • #7 &amp;#x30FB;&amp;#x540D;&amp;#x53E4;&amp;#x5C4B;&amp;#x306B;&amp;#x306F;&amp;#x3069;&amp;#x3048;&amp;#x308A;&amp;#x3083;&amp;#x3042;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x30AB;&amp;#x30D5;&amp;#x30A7;&amp;#x304C;&amp;#x3042;&amp;#x3063;&amp;#x305F;&amp;#x3093;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x305D;&amp;#x3053;&amp;#x3067;10&amp;#x4EBA;&amp;#x304F;&amp;#x3089;&amp;#x3044;&amp;#x3067;&amp;#x30CF;&amp;#x30C3;&amp;#x30AB;&amp;#x30F3;&amp;#x3084;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x305F;&amp;#x3002;\n&amp;#x30FB;SML#&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x3092;&amp;#x6539;&amp;#x9020;&amp;#x3059;&amp;#x308B;&amp;#x4F1A;\n&amp;#x30FB;&amp;#x3053;&amp;#x306E;&amp;#x3068;&amp;#x304D;&amp;#x306E;&amp;#x6210;&amp;#x679C;&amp;#x7269;&amp;#x306B;&amp;#x3064;&amp;#x3044;&amp;#x3066;&amp;#x306F;&amp;#x3042;&amp;#x3068;&amp;#x3067;&amp;#x3066;&amp;#x8A71;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • #8 &amp;#x5927;&amp;#x5800;&amp;#x672C;&amp;#x306E;&amp;#x8AAD;&amp;#x66F8;&amp;#x4F1A;\n
  • #9 &amp;#x540D;&amp;#x53E4;&amp;#x5C4B;&amp;#x306E;&amp;#x4EBA;&amp;#x305F;&amp;#x3061;&amp;#x306F;SML#&amp;#x306F;&amp;#x597D;&amp;#x304D;&amp;#x3060;&amp;#x3051;&amp;#x3069;SML&amp;#x306B;&amp;#x306F;&amp;#x8208;&amp;#x5473;&amp;#x306A;&amp;#x3044;\n
  • #10 &amp;#x540D;&amp;#x53E4;&amp;#x5C4B;&amp;#x306E;&amp;#x4EBA;&amp;#x305F;&amp;#x3061;&amp;#x306F;SML#&amp;#x306F;&amp;#x597D;&amp;#x304D;&amp;#x3060;&amp;#x3051;&amp;#x3069;SML&amp;#x306B;&amp;#x306F;&amp;#x8208;&amp;#x5473;&amp;#x306A;&amp;#x3044;\n
  • #11 &amp;#x30FB;&amp;#x304A;&amp;#x304A;&amp;#x307B;&amp;#x308A;&amp;#x5148;&amp;#x751F;&amp;#x306E;&amp;#x5A18;&amp;#x3055;&amp;#x3093;&amp;#x304C;&amp;#x304B;&amp;#x3044;&amp;#x305F;\n&amp;#x30FB;not BSD\n
  • #12 &amp;#x30FB;&amp;#x5168;&amp;#x90E8;&amp;#x306E;&amp;#x30EC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x306B;id&amp;#x3068;&amp;#x304B;name&amp;#x3068;&amp;#x304B;&amp;#x3064;&amp;#x3051;&amp;#x3066;&amp;#x3082;&amp;#x5927;&amp;#x4E08;&amp;#x592B;&amp;#x201D;&amp;#x201D;\n
  • #13 \n
  • #14 &amp;#x30FB;OCaml 296,591&amp;#x3001;SML# 152,523&amp;#x3001;GHC 364,766\n&amp;#x30FB;&amp;#x5358;&amp;#x7D14;&amp;#x306A;&amp;#x6BD4;&amp;#x8F03;&amp;#x306F;&amp;#x3067;&amp;#x304D;&amp;#x306A;&amp;#x3044;\n&amp;#x30FB;&amp;#x6539;&amp;#x9020;&amp;#x3057;&amp;#x3084;&amp;#x3059;&amp;#x3044;\n
  • #15 SML&amp;#x306E;op&amp;#x306F;Haskell&amp;#x3084;OCaml&amp;#x306E;&amp;#x4EBA;&amp;#x306B;&amp;#x306F;&amp;#x9055;&amp;#x548C;&amp;#x611F;&amp;#x304C;&amp;#x3042;&amp;#x308B;\ncop = curried operator\n
  • #16 \n
  • #17 \n
  • #18 &amp;#x30FB;&amp;#x30D6;&amp;#x30E9;&amp;#x30A6;&amp;#x30B6;&amp;#x4E0A;&amp;#x3067;&amp;#x8A66;&amp;#x305B;&amp;#x308B;\n&amp;#x30FB;&amp;#x30B5;&amp;#x30F3;&amp;#x30C9;&amp;#x30DC;&amp;#x30C3;&amp;#x30AF;&amp;#x30B9;&amp;#x5185;&amp;#x3067;&amp;#x5B9F;&amp;#x884C;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x308B;\n&amp;#x30FB;SML#&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x81EA;&amp;#x4F53;&amp;#x306B;&amp;#x306F;&amp;#x3001;&amp;#x7D50;&amp;#x5C40;&amp;#x624B;&amp;#x3092;&amp;#x3044;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x306A;&amp;#x3044;\n
  • #19 \n
  • #20 &amp;#x30FB;&amp;#x30E1;&amp;#x30E2;&amp;#x5E33;&amp;#x3067;Haskell&amp;#x66F8;&amp;#x3044;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x4EBA;&amp;#x3092;&amp;#x500B;&amp;#x4EBA;&amp;#x7684;&amp;#x306B;&amp;#x77E5;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x666E;&amp;#x901A;&amp;#x306E;&amp;#x4EBA;&amp;#x306F;&amp;#x30A8;&amp;#x30C7;&amp;#x30A3;&amp;#x30BF;&amp;#x3092;&amp;#x4F7F;&amp;#x3046;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x30FB;&amp;#x4E16;&amp;#x754C;&amp;#x306B;&amp;#x306F;2&amp;#x3064;&amp;#x306E;&amp;#x30A8;&amp;#x30C7;&amp;#x30A3;&amp;#x30BF;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x3002;&amp;#x3069;&amp;#x3061;&amp;#x3089;&amp;#x304C;&amp;#x597D;&amp;#x304D;&amp;#x3067;&amp;#x3059;&amp;#x304B;\n---\n&amp;#x30FB;emacs: sml-mode\n---\n&amp;#x30FB;Eclipse\n----\n&amp;#x30FB;&amp;#x3088;&amp;#x3093;&amp;#x305F;&amp;#x3055;&amp;#x3093;&amp;#x304C;&amp;#x4F5C;&amp;#x3063;&amp;#x3066;&amp;#x305F;&amp;#x3002;&amp;#x6700;&amp;#x65B0;&amp;#x7248;&amp;#x306E;SML#&amp;#x3067;&amp;#x306F;&amp;#x52D5;&amp;#x304B;&amp;#x306A;&amp;#x3044;&amp;#x3089;&amp;#x3057;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x4F7F;&amp;#x3044;&amp;#x305F;&amp;#x3044;&amp;#x3072;&amp;#x3068;&amp;#x306F;&amp;#x5F7C;&amp;#x306B;mention&amp;#x3092;&amp;#x9001;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;\n
  • #21 &amp;#x30FB;&amp;#x30E1;&amp;#x30E2;&amp;#x5E33;&amp;#x3067;Haskell&amp;#x66F8;&amp;#x3044;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x4EBA;&amp;#x3092;&amp;#x500B;&amp;#x4EBA;&amp;#x7684;&amp;#x306B;&amp;#x77E5;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x666E;&amp;#x901A;&amp;#x306E;&amp;#x4EBA;&amp;#x306F;&amp;#x30A8;&amp;#x30C7;&amp;#x30A3;&amp;#x30BF;&amp;#x3092;&amp;#x4F7F;&amp;#x3046;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x30FB;&amp;#x4E16;&amp;#x754C;&amp;#x306B;&amp;#x306F;2&amp;#x3064;&amp;#x306E;&amp;#x30A8;&amp;#x30C7;&amp;#x30A3;&amp;#x30BF;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x3002;&amp;#x3069;&amp;#x3061;&amp;#x3089;&amp;#x304C;&amp;#x597D;&amp;#x304D;&amp;#x3067;&amp;#x3059;&amp;#x304B;\n---\n&amp;#x30FB;emacs: sml-mode\n---\n&amp;#x30FB;Eclipse\n----\n&amp;#x30FB;&amp;#x3088;&amp;#x3093;&amp;#x305F;&amp;#x3055;&amp;#x3093;&amp;#x304C;&amp;#x4F5C;&amp;#x3063;&amp;#x3066;&amp;#x305F;&amp;#x3002;&amp;#x6700;&amp;#x65B0;&amp;#x7248;&amp;#x306E;SML#&amp;#x3067;&amp;#x306F;&amp;#x52D5;&amp;#x304B;&amp;#x306A;&amp;#x3044;&amp;#x3089;&amp;#x3057;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x4F7F;&amp;#x3044;&amp;#x305F;&amp;#x3044;&amp;#x3072;&amp;#x3068;&amp;#x306F;&amp;#x5F7C;&amp;#x306B;mention&amp;#x3092;&amp;#x9001;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;\n
  • #22 &amp;#x30FB;&amp;#x30E1;&amp;#x30E2;&amp;#x5E33;&amp;#x3067;Haskell&amp;#x66F8;&amp;#x3044;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x4EBA;&amp;#x3092;&amp;#x500B;&amp;#x4EBA;&amp;#x7684;&amp;#x306B;&amp;#x77E5;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x666E;&amp;#x901A;&amp;#x306E;&amp;#x4EBA;&amp;#x306F;&amp;#x30A8;&amp;#x30C7;&amp;#x30A3;&amp;#x30BF;&amp;#x3092;&amp;#x4F7F;&amp;#x3046;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x30FB;&amp;#x4E16;&amp;#x754C;&amp;#x306B;&amp;#x306F;2&amp;#x3064;&amp;#x306E;&amp;#x30A8;&amp;#x30C7;&amp;#x30A3;&amp;#x30BF;&amp;#x304C;&amp;#x3042;&amp;#x308B;&amp;#x3002;&amp;#x3069;&amp;#x3061;&amp;#x3089;&amp;#x304C;&amp;#x597D;&amp;#x304D;&amp;#x3067;&amp;#x3059;&amp;#x304B;\n---\n&amp;#x30FB;emacs: sml-mode\n---\n&amp;#x30FB;Eclipse\n----\n&amp;#x30FB;&amp;#x3088;&amp;#x3093;&amp;#x305F;&amp;#x3055;&amp;#x3093;&amp;#x304C;&amp;#x4F5C;&amp;#x3063;&amp;#x3066;&amp;#x305F;&amp;#x3002;&amp;#x6700;&amp;#x65B0;&amp;#x7248;&amp;#x306E;SML#&amp;#x3067;&amp;#x306F;&amp;#x52D5;&amp;#x304B;&amp;#x306A;&amp;#x3044;&amp;#x3089;&amp;#x3057;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x4F7F;&amp;#x3044;&amp;#x305F;&amp;#x3044;&amp;#x3072;&amp;#x3068;&amp;#x306F;&amp;#x5F7C;&amp;#x306B;mention&amp;#x3092;&amp;#x9001;&amp;#x308A;&amp;#x307E;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;\n
  • #23 &amp;#x9078;&amp;#x629E;&amp;#x80A2;&amp;#x304C;2&amp;#x3064;&amp;#x3042;&amp;#x308B;&amp;#x306A;&amp;#x3089;&amp;#x6BD4;&amp;#x8F03;&amp;#x3057;&amp;#x306A;&amp;#x3044;&amp;#x3068;&amp;#x3044;&amp;#x3051;&amp;#x307E;&amp;#x305B;&amp;#x3093;&amp;#x3002;\n
  • #24 \n
  • #25 &amp;#x30FB;fact&amp;#x3050;&amp;#x3089;&amp;#x3044;&amp;#x306A;&amp;#x3089;&amp;#x307E;&amp;#x3060;&amp;#x3057;&amp;#x3082;&amp;#x30EA;&amp;#x30A2;&amp;#x30EB;&amp;#x306A;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3060;&amp;#x3068;&amp;#x578B;&amp;#x304C;&amp;#x308F;&amp;#x304B;&amp;#x3089;&amp;#x306A;&amp;#x304F;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3057;&amp;#x307E;&amp;#x3046;&amp;#x3002;\n&amp;#x30FB;&amp;#x3069;&amp;#x3046;&amp;#x3084;&amp;#x3063;&amp;#x3066;&amp;#x3082;&amp;#x7121;&amp;#x7406;&amp;#x306A;&amp;#x3089;&amp;#x307E;&amp;#x3060;&amp;#x8AE6;&amp;#x3081;&amp;#x304C;&amp;#x4ED8;&amp;#x304F;&amp;#x308F;&amp;#x3051;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x5404;&amp;#x5909;&amp;#x6570;&amp;#x306E;&amp;#x578B;&amp;#x60C5;&amp;#x306F;&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x306F;&amp;#x77E5;&amp;#x3063;&amp;#x3066;&amp;#x308B;&amp;#x3002;\n&amp;#x30FB;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x3092;&amp;#x6539;&amp;#x9020;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x305D;&amp;#x306E;&amp;#x60C5;&amp;#x5831;&amp;#x3092;&amp;#x5916;&amp;#x304B;&amp;#x3089;&amp;#x4F7F;&amp;#x3048;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • #26 &amp;#x666E;&amp;#x901A;&amp;#x306F;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30EB;&amp;#x3057;&amp;#x3066;&amp;#x5B9F;&amp;#x884C;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3092;&amp;#x751F;&amp;#x6210;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n--\n&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x3092;&amp;#x6539;&amp;#x9020;&amp;#x3057;&amp;#x3066;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x3092;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3057;&amp;#x305F;annot&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3082;&amp;#x751F;&amp;#x6210;&amp;#x3059;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x305D;&amp;#x308C;&amp;#x3092;emacs&amp;#x304B;&amp;#x3089;&amp;#x8AAD;&amp;#x307F;&amp;#x3053;&amp;#x3080;&amp;#x3053;&amp;#x3068;&amp;#x3067;&amp;#x3001;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x306E;&amp;#x8868;&amp;#x793A;&amp;#x3092;&amp;#x5B9F;&amp;#x73FE;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • #27 &amp;#x666E;&amp;#x901A;&amp;#x306F;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30EB;&amp;#x3057;&amp;#x3066;&amp;#x5B9F;&amp;#x884C;&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3092;&amp;#x751F;&amp;#x6210;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n--\n&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x3092;&amp;#x6539;&amp;#x9020;&amp;#x3057;&amp;#x3066;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x3092;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3057;&amp;#x305F;annot&amp;#x30D5;&amp;#x30A1;&amp;#x30A4;&amp;#x30EB;&amp;#x3082;&amp;#x751F;&amp;#x6210;&amp;#x3059;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x305D;&amp;#x308C;&amp;#x3092;emacs&amp;#x304B;&amp;#x3089;&amp;#x8AAD;&amp;#x307F;&amp;#x3053;&amp;#x3080;&amp;#x3053;&amp;#x3068;&amp;#x3067;&amp;#x3001;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x306E;&amp;#x8868;&amp;#x793A;&amp;#x3092;&amp;#x5B9F;&amp;#x73FE;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • #28 SML#&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x3001;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x304B;&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x306F;&amp;#x8907;&amp;#x6570;&amp;#x306E;&amp;#x30D1;&amp;#x30B9;&amp;#x306B;&amp;#x3088;&amp;#x3063;&amp;#x3066;&amp;#x69CB;&amp;#x6210;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\nSML#&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30E9;&amp;#x306E;&amp;#x5834;&amp;#x5408;&amp;#x3001;&amp;#x3053;&amp;#x3093;&amp;#x306A;&amp;#x611F;&amp;#x3058;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;(&amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x5F85;&amp;#x3064;)\n
  • #29 &amp;#x4ECA;&amp;#x56DE;&amp;#x306F;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x306E;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x304C;&amp;#x76EE;&amp;#x7684;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x5F8C;&amp;#x534A;&amp;#x306E;&amp;#x6700;&amp;#x9069;&amp;#x5316;&amp;#x3084;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x751F;&amp;#x6210;&amp;#x306F;&amp;#x7121;&amp;#x8996;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x3067;&amp;#x3001;&amp;#x6700;&amp;#x521D;&amp;#x306E;&amp;#x307B;&amp;#x3046;&amp;#x3092;&amp;#x898B;&amp;#x308B;&amp;#x3068;&amp;#x3061;&amp;#x3087;&amp;#x3046;&amp;#x3069;&amp;#x578B;&amp;#x63A8;&amp;#x8AD6;&amp;#x3092;&amp;#x3084;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x30D1;&amp;#x30B9;&amp;#x304C;&amp;#x898B;&amp;#x3064;&amp;#x304B;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n--\n&amp;#x3053;&amp;#x306E;&amp;#x578B;&amp;#x63A8;&amp;#x8AD6;&amp;#x304C;&amp;#x304A;&amp;#x308F;&amp;#x3063;&amp;#x305F;&amp;#x76F4;&amp;#x5F8C;&amp;#x306B;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x3092;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3057;&amp;#x3066;&amp;#x3084;&amp;#x308C;&amp;#x3070;&amp;#x3088;&amp;#x3055;&amp;#x305D;&amp;#x3046;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n--\n&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3053;&amp;#x306E;&amp;#x3042;&amp;#x3068;&amp;#x306B;&amp;#x51E6;&amp;#x7406;&amp;#x3092;&amp;#x8FFD;&amp;#x52A0;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • #30 &amp;#x4ECA;&amp;#x56DE;&amp;#x306F;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x306E;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x304C;&amp;#x76EE;&amp;#x7684;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x5F8C;&amp;#x534A;&amp;#x306E;&amp;#x6700;&amp;#x9069;&amp;#x5316;&amp;#x3084;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x751F;&amp;#x6210;&amp;#x306F;&amp;#x7121;&amp;#x8996;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x3067;&amp;#x3001;&amp;#x6700;&amp;#x521D;&amp;#x306E;&amp;#x307B;&amp;#x3046;&amp;#x3092;&amp;#x898B;&amp;#x308B;&amp;#x3068;&amp;#x3061;&amp;#x3087;&amp;#x3046;&amp;#x3069;&amp;#x578B;&amp;#x63A8;&amp;#x8AD6;&amp;#x3092;&amp;#x3084;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x30D1;&amp;#x30B9;&amp;#x304C;&amp;#x898B;&amp;#x3064;&amp;#x304B;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n--\n&amp;#x3053;&amp;#x306E;&amp;#x578B;&amp;#x63A8;&amp;#x8AD6;&amp;#x304C;&amp;#x304A;&amp;#x308F;&amp;#x3063;&amp;#x305F;&amp;#x76F4;&amp;#x5F8C;&amp;#x306B;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x3092;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3057;&amp;#x3066;&amp;#x3084;&amp;#x308C;&amp;#x3070;&amp;#x3088;&amp;#x3055;&amp;#x305D;&amp;#x3046;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n--\n&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3053;&amp;#x306E;&amp;#x3042;&amp;#x3068;&amp;#x306B;&amp;#x51E6;&amp;#x7406;&amp;#x3092;&amp;#x8FFD;&amp;#x52A0;&amp;#x3057;&amp;#x3066;&amp;#x3001;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3067;&amp;#x304D;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • #31 \n
  • #32 \n
  • #33 \n
  • #34 &amp;#x30FB;&amp;#x5BA3;&amp;#x8A00;&amp;#x306E;&amp;#x578B;&amp;#x306F;&amp;#x3053;&amp;#x3093;&amp;#x306A;&amp;#x611F;&amp;#x3058;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x30FB;&amp;#x30D5;&amp;#x30A9;&amp;#x30F3;&amp;#x30C8;&amp;#x304C;&amp;#x5C0F;&amp;#x3055;&amp;#x304F;&amp;#x3066;&amp;#x307F;&amp;#x306B;&amp;#x304F;&amp;#x3044;&amp;#x3068;&amp;#x601D;&amp;#x3046;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x307F;&amp;#x306A;&amp;#x3055;&amp;#x3093;&amp;#x306E;&amp;#x30ED;&amp;#x30FC;&amp;#x30AB;&amp;#x30EB;&amp;#x306B;&amp;#x3042;&amp;#x308B;SML#&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x76F4;&amp;#x63A5;&amp;#x898B;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x3060;&amp;#x3044;&amp;#x3066;&amp;#x3082;&amp;#x7D50;&amp;#x69CB;&amp;#x3067;&amp;#x3059;&amp;#x3002;...&amp;#x3068;&amp;#x3046;&amp;#x305C;&amp;#x3093;&amp;#x30C0;&amp;#x30A6;&amp;#x30F3;&amp;#x30ED;&amp;#x30FC;&amp;#x30C9;&amp;#x3057;&amp;#x3066;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3088;&amp;#x306D;?\n&amp;#x30FB;SML#&amp;#x306E;&amp;#x5404;&amp;#x5BA3;&amp;#x8A00;&amp;#x304C;&amp;#x30B3;&amp;#x30F3;&amp;#x30B9;&amp;#x30C8;&amp;#x30E9;&amp;#x30AF;&amp;#x30BF;&amp;#x306B;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x4E0A;&amp;#x304B;&amp;#x3089;&amp;#x9806;&amp;#x306B;&amp;#x95A2;&amp;#x6570;&amp;#x5BA3;&amp;#x8A00;&amp;#x3001;&amp;#x591A;&amp;#x76F8;&amp;#x306E;&amp;#x95A2;&amp;#x6570;&amp;#x5BA3;&amp;#x8A00;&amp;#x3001;&amp;#x5909;&amp;#x6570;&amp;#x5BA3;&amp;#x8A00;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n---\n&amp;#x30FB;&amp;#x30DD;&amp;#x30A4;&amp;#x30F3;&amp;#x30C8;&amp;#x306F;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x3068;&amp;#x4F4D;&amp;#x7F6E;&amp;#x60C5;&amp;#x5831;&amp;#x304C;&amp;#x542B;&amp;#x307E;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • #35 &amp;#x30FB;&amp;#x5BA3;&amp;#x8A00;&amp;#x306E;&amp;#x578B;&amp;#x306F;&amp;#x3053;&amp;#x3093;&amp;#x306A;&amp;#x611F;&amp;#x3058;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x30FB;&amp;#x30D5;&amp;#x30A9;&amp;#x30F3;&amp;#x30C8;&amp;#x304C;&amp;#x5C0F;&amp;#x3055;&amp;#x304F;&amp;#x3066;&amp;#x307F;&amp;#x306B;&amp;#x304F;&amp;#x3044;&amp;#x3068;&amp;#x601D;&amp;#x3046;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x307F;&amp;#x306A;&amp;#x3055;&amp;#x3093;&amp;#x306E;&amp;#x30ED;&amp;#x30FC;&amp;#x30AB;&amp;#x30EB;&amp;#x306B;&amp;#x3042;&amp;#x308B;SML#&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x76F4;&amp;#x63A5;&amp;#x898B;&amp;#x3066;&amp;#x3044;&amp;#x305F;&amp;#x3060;&amp;#x3044;&amp;#x3066;&amp;#x3082;&amp;#x7D50;&amp;#x69CB;&amp;#x3067;&amp;#x3059;&amp;#x3002;...&amp;#x3068;&amp;#x3046;&amp;#x305C;&amp;#x3093;&amp;#x30C0;&amp;#x30A6;&amp;#x30F3;&amp;#x30ED;&amp;#x30FC;&amp;#x30C9;&amp;#x3057;&amp;#x3066;&amp;#x3042;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3088;&amp;#x306D;?\n&amp;#x30FB;SML#&amp;#x306E;&amp;#x5404;&amp;#x5BA3;&amp;#x8A00;&amp;#x304C;&amp;#x30B3;&amp;#x30F3;&amp;#x30B9;&amp;#x30C8;&amp;#x30E9;&amp;#x30AF;&amp;#x30BF;&amp;#x306B;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x4E0A;&amp;#x304B;&amp;#x3089;&amp;#x9806;&amp;#x306B;&amp;#x95A2;&amp;#x6570;&amp;#x5BA3;&amp;#x8A00;&amp;#x3001;&amp;#x591A;&amp;#x76F8;&amp;#x306E;&amp;#x95A2;&amp;#x6570;&amp;#x5BA3;&amp;#x8A00;&amp;#x3001;&amp;#x5909;&amp;#x6570;&amp;#x5BA3;&amp;#x8A00;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n---\n&amp;#x30FB;&amp;#x30DD;&amp;#x30A4;&amp;#x30F3;&amp;#x30C8;&amp;#x306F;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x3068;&amp;#x4F4D;&amp;#x7F6E;&amp;#x60C5;&amp;#x5831;&amp;#x304C;&amp;#x542B;&amp;#x307E;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • #36 &amp;#x30FB;(&amp;#x53D7;&amp;#x3051;&amp;#x3066;&amp;#x305F;&amp;#x3089;)&amp;#x30D5;&amp;#x30A9;&amp;#x30F3;&amp;#x30C8;&amp;#x304C;&amp;#x5C0F;&amp;#x3055;&amp;#x304F;&amp;#x3066;&amp;#x307F;&amp;#x306B;&amp;#x304F;&amp;#x3044;&amp;#x3068;&amp;#x601D;&amp;#x3046;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x307F;&amp;#x306A;&amp;#x3055;&amp;#x3093;&amp;#x306E;&amp;#x30ED;&amp;#x30FC;&amp;#x30AB;&amp;#x30EB;&amp;#x306B;&amp;#x3042;&amp;#x308B;SML#&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;..\n&amp;#x30FB;&amp;#x4ECA;&amp;#x5EA6;&amp;#x306F;&amp;#x5F0F;&amp;#x306B;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3059;&amp;#x308B;datatype&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x4E0A;&amp;#x304B;&amp;#x3089;&amp;#x9806;&amp;#x306B;sqlserver&amp;#x3078;&amp;#x306E;&amp;#x63A5;&amp;#x7D9A;&amp;#x3001;&amp;#x9069;&amp;#x7528;&amp;#x3001;&amp;#x5909;&amp;#x6570;&amp;#x53C2;&amp;#x7167;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x30FB;&amp;#x3053;&amp;#x308C;&amp;#x3082;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x3068;&amp;#x4F4D;&amp;#x7F6E;&amp;#x60C5;&amp;#x5831;&amp;#x304C;&amp;#x57CB;&amp;#x3081;&amp;#x8FBC;&amp;#x307E;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n
  • #37 &amp;#x30FB;(&amp;#x53D7;&amp;#x3051;&amp;#x3066;&amp;#x305F;&amp;#x3089;)&amp;#x30D5;&amp;#x30A9;&amp;#x30F3;&amp;#x30C8;&amp;#x304C;&amp;#x5C0F;&amp;#x3055;&amp;#x304F;&amp;#x3066;&amp;#x307F;&amp;#x306B;&amp;#x304F;&amp;#x3044;&amp;#x3068;&amp;#x601D;&amp;#x3046;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x307F;&amp;#x306A;&amp;#x3055;&amp;#x3093;&amp;#x306E;&amp;#x30ED;&amp;#x30FC;&amp;#x30AB;&amp;#x30EB;&amp;#x306B;&amp;#x3042;&amp;#x308B;SML#&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;..\n&amp;#x30FB;&amp;#x4ECA;&amp;#x5EA6;&amp;#x306F;&amp;#x5F0F;&amp;#x306B;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3059;&amp;#x308B;datatype&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x4E0A;&amp;#x304B;&amp;#x3089;&amp;#x9806;&amp;#x306B;sqlserver&amp;#x3078;&amp;#x306E;&amp;#x63A5;&amp;#x7D9A;&amp;#x3001;&amp;#x9069;&amp;#x7528;&amp;#x3001;&amp;#x5909;&amp;#x6570;&amp;#x53C2;&amp;#x7167;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x30FB;&amp;#x3053;&amp;#x308C;&amp;#x3082;&amp;#x578B;&amp;#x60C5;&amp;#x5831;&amp;#x3068;&amp;#x4F4D;&amp;#x7F6E;&amp;#x60C5;&amp;#x5831;&amp;#x304C;&amp;#x57CB;&amp;#x3081;&amp;#x8FBC;&amp;#x307E;&amp;#x308C;&amp;#x3066;&amp;#x3044;&amp;#x307E;&amp;#x3059;\n
  • #38 &amp;#x30FB;&amp;#x578B;&amp;#x306F;tyToString&amp;#x3067;&amp;#x6587;&amp;#x5B57;&amp;#x5217;&amp;#x306B;&amp;#x3067;&amp;#x304D;&amp;#x308B;\n&amp;#x30FB;&amp;#x4F4D;&amp;#x7F6E;&amp;#x60C5;&amp;#x5831;&amp;#x306F;lineOfPos&amp;#x3067;&amp;#x884C;&amp;#x756A;&amp;#x53F7;&amp;#x3001;colOfPos&amp;#x3067;&amp;#x5217;&amp;#x756A;&amp;#x53F7;&amp;#x304C;&amp;#x3068;&amp;#x308C;&amp;#x308B;\n
  • #39 &amp;#x30FB;&amp;#x3053;&amp;#x308C;&amp;#x3067;&amp;#x60C5;&amp;#x5831;&amp;#x306F;&amp;#x305D;&amp;#x308D;&amp;#x3063;&amp;#x305F;&amp;#x306E;&amp;#x3067;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3059;&amp;#x308B;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x304C;&amp;#x3057;&amp;#x304C;&amp;#x3057;&amp;#x66F8;&amp;#x3044;&amp;#x3066;&amp;#x3044;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x30FB;&amp;#x57FA;&amp;#x672C;&amp;#x7684;&amp;#x306B;tpdecl&amp;#x3068;tpexp&amp;#x3092;&amp;#x306A;&amp;#x3081;&amp;#x3066;&amp;#x3044;&amp;#x304F;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x306B;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3059;\n
  • #40 \n
  • #41 \n
  • #42 &amp;#x30FB;&amp;#x5E38;&amp;#x306B;&amp;#x30C0;&amp;#x30F3;&amp;#x30D7;&amp;#x3059;&amp;#x308B;&amp;#x306E;&amp;#x3082;&amp;#x5FAE;&amp;#x5999;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x30B9;&amp;#x30A4;&amp;#x30C3;&amp;#x30C1;&amp;#x3067;&amp;#x5207;&amp;#x308A;&amp;#x66FF;&amp;#x3048;&amp;#x308C;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3059;&amp;#x308B;\n
  • #43 \n
  • #44 \n
  • #45 \n
  • #46 &amp;#x30FB;camlspotter&amp;#x3063;&amp;#x307D;&amp;#x304F;&amp;#x3057;&amp;#x305F;&amp;#x3044;\n&amp;#x30FB;&amp;#x591A;&amp;#x76F8;&amp;#x30EC;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x306E;&amp;#x578B;&amp;#x304C;&amp;#x3046;&amp;#x307E;&amp;#x304F;&amp;#x6587;&amp;#x5B57;&amp;#x5217;&amp;#x5316;&amp;#x3067;&amp;#x304D;&amp;#x306A;&amp;#x3044;\n
  • #47 &amp;#x3053;&amp;#x308C;&amp;#x3067;&amp;#x307F;&amp;#x306A;&amp;#x3055;&amp;#x3093;&amp;#x3082;SML#&amp;#x3092;&amp;#x6539;&amp;#x9020;&amp;#x3057;&amp;#x305F;&amp;#x304F;&amp;#x306A;&amp;#x3063;&amp;#x305F;&amp;#x3068;&amp;#x601D;&amp;#x3046;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x3044;&amp;#x304F;&amp;#x3064;&amp;#x304B;&amp;#x958B;&amp;#x767A;tips&amp;#x3092;&amp;#x7D39;&amp;#x4ECB;&amp;#x3057;&amp;#x3066;&amp;#x304A;&amp;#x308F;&amp;#x308D;&amp;#x3046;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  • #48 \n
  • #49 &amp;#x6700;&amp;#x8FD1;&amp;#x3001;Mac&amp;#x304C;&amp;#x3068;&amp;#x308C;&amp;#x3066;OS X&amp;#x306E;&amp;#x307F;&amp;#x306B;&amp;#x306A;&amp;#x3063;&amp;#x305F;&amp;#x3068;&amp;#x304B;&amp;#x305D;&amp;#x3046;&amp;#x3044;&amp;#x3046;&amp;#x7D30;&amp;#x304B;&amp;#x3044;&amp;#x3053;&amp;#x3068;&amp;#x306F;&amp;#x8A31;&amp;#x3057;&amp;#x3066;&amp;#x304F;&amp;#x3060;&amp;#x3055;&amp;#x3044;&amp;#x3002;\n64bit&amp;#x3067;&amp;#x30D3;&amp;#x30EB;&amp;#x30C9;&amp;#x3067;&amp;#x304D;&amp;#x306A;&amp;#x3044;&amp;#x308F;&amp;#x3051;&amp;#x3058;&amp;#x3083;&amp;#x306A;&amp;#x3044;&amp;#x3093;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x307E;&amp;#x3042;&amp;#x3001;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;&amp;#x3068;&amp;#x9762;&amp;#x5012;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;&amp;#x8A66;&amp;#x3059;&amp;#x3068;&amp;#x304D;&amp;#x306F;Ubuntu&amp;#x306E;&amp;#x307B;&amp;#x3046;&amp;#x304C;&amp;#x697D;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  • #50 \n