Hatena::Groupcoders

ラシウラ出張所 このページをアンテナに追加 RSSフィード

2007/05/11

[][] 関数不動点  関数の不動点 - ラシウラ出張所 を含むブックマーク はてなブックマーク -  関数の不動点 - ラシウラ出張所  関数の不動点 - ラシウラ出張所 のブックマークコメント

OCaml:

type ('a, 'b) wrappedFun = Wrap of (('a, 'b) wrappedFun -> ('a -> 'b))

let fixpoint = fun funDef ->
  let unwrap = function Wrap(func) -> func in
  let genFunc = fun wrapped -> funDef (fun n -> (unwrap wrapped) wrapped n) in
  let wrapped = Wrap(genFunc) in
  genFunc wrapped

(* example *)
let factorial = fixpoint (fun fact n -> if n = 0 then 1 else n * fact (n - 1))

open Printf;;
printf "%d\n" (factorial 5)

Haskell:

fix f = f (fix f)

fact = fix $ \fn n -> if n < 1 then 1 else n * fn (n - 1)

main = do
    putStrLn $ show (fact 5)
    return ()

上のMLのようにhaskellで書くとghcコンパイルがとまらなくなりました。

data Wrap a = Wrap ((Wrap a) -> a)

-- cannot compile, compiler infinit loop
fix f = genfunc wrapped
    where
      unwrap (Wrap g) = g
      genfunc wrapped = f ((unwrap wrapped) wrapped)
      wrapped = Wrap genfunc

fact = fix (\fact -> (\n -> if n == 0 then 1 else n * (fact (n - 1))))
main = putStrLn $ show (fact 10)

[] UTF8でLaTeX(pLaTeX)を使う方法  UTF8でLaTeX(pLaTeX)を使う方法 - ラシウラ出張所 を含むブックマーク はてなブックマーク -  UTF8でLaTeX(pLaTeX)を使う方法 - ラシウラ出張所  UTF8でLaTeX(pLaTeX)を使う方法 - ラシウラ出張所 のブックマークコメント

(追記: platexをやめてxelatexを使おう - ラシウラplatexではなくxelatexを使うやり方を書きました)

いまさらSJISとかEUC-JPとかISO-2022-JPとか使う時代じゃないってことで。

\documentclass[a4j]{jarticle}
\usepackage{url}

\title{UTF8で \LaTeX を使う方法}
\author{bellbind}


\begin{document}
\sffamily
\maketitle

\begin{abstract}
UTF-8でp\LaTeX を処理する方法。
\end{abstract}

\section{環境}

最近の p\LaTeX が入っているならたぶん大丈夫。

debianの場合は、debパッケージのptexがUTF-8に対応していません。
ptetex3
\footnote{\url{http://www.nn.iij4u.or.jp/~tutimura/tex/ptetex.html}}
をローカルにでも入れて使いましょう。
ptetexにも付いてきますが、dvipdfmxはdebパッケージのものでもUTF8に対応できています。

例:
\begin{itemize}
\item TeXインストーラー
\footnote{\url{http://www.ms.u-tokyo.ac.jp/~abenori/mycreate/index.html}}
からWindows上にインストール
\end{itemize}

\section{\TeX ソース}

ふつうの p\LaTeX のソースと同様に記述する。
ただし、ファイルのエンコーディングはutf8にする。
\begin{itemize}
\item xyzzy \footnote{\url{http://www.jsdlab.co.jp/~kamei/}} なら "utf8n"
\end{itemize}

\section{コマンドライン}

コンパイル時に {\tt --kanji=utf8} オプションをつけるだけ。

Windowsの場合:
\begin{verbatim}
$ platex --kanji=utf8 test.tex
$ dvipdfm test.pdf
\end{verbatim}

debianの場合:
\begin{verbatim}
$ platex --kanji=utf8 test.tex
$ dvipdfmx test.pdf
\end{verbatim}


\end{document}

↑をtest.texという名前ファイルにUTF8Nで保存して上記コマンドビルドできます。

オプション--kanji=utf8はaliasしてもいいくらい

alias platex='platex --kanji=utf8'

ptetex3のdebianへのインストール

サイトの説明どおりに行けば普通にビルドインストールできます。

自分場合、~/util/ptetexに入れてます。


問題になるのはmy_optionと必要なパッケージでしょうか。

ビルドに必要なdebパッケージ

このあたりがあらかじめ入れてあればビルド可能です。

まず、指定してある3つのアーカイブひとつディレクトリ内にダウンロードします。ptetexアーカイブだけ展開し、ディレクトリを移動します。

my_optionはmy_option.sampleからコピーし作り、一部コメントアウトをはずしていく

  • KANJI_CODE=UTF8
  • XDVI=echo
  • PXDVI=echo
  • PREFIX=/home/bellbind/util/ptetex

$PREFIX/bin/platexになります。

makeはotf、babel含めすべて行うといいです。

最後make install。~/util/ptetex/binにPATHを通して、alias platex='platexr--kanji=utf8'して終わり