[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/01 11:11 / Filesize : 241 KB / Number-of Response : 1017
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型言語ML (SML, OCaml, etc.), Part 6



1 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 07:15:21 .net]
関数型言語MLについて語るスレッドです。

MLは、確固とした理論的背景を持つ言語でありながら、
現実的なソフトの開発にも使用できる実用性を備えた言語です。
また、プログラミングの初心者が最初に学習する言語としても優れています。

総本山
Standard ML www.smlnj.org/
Objective Caml caml.inria.fr/ocaml/

前スレ
関数型言語ML(SML, OCaml, etc.), Part 5
pc12.2ch.net/test/read.cgi/tech/1186292994/

687 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 04:18:36.52 .net]
動くけど、monoを入れる羽目になるし、.NET Frameworkが無いから旨さ半減

688 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 06:47:38.91 .net]
F#とOcamlって実行速度ちがってくるものなの?

689 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 08:16:48.29 .net]
OCamlはネイティブ

690 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 09:50:20.17 .net]
.NETはJITコンパイルされるし、OCamlのネイティブコンパイラの最適化は最低限だし

691 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 10:45:01.28 .net]
F#は.NETでも遅い方だろ

692 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 10:52:12.02 .net]
はいはい荒れるからこれで終わり
benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=all&data=u64q

693 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 22:25:53.10 .net]
Real World OCaml読もうぜ!OCamlSpotterの人も評価してたがAppendix A: installationでopam + core + utopをいきなりインストールさせるのはびっくりした。
こいつらガチでOCamlを普段使いにしてやがる。

694 名前:デフォルトの名無しさん [2013/09/15(日) 22:30:57.96 .net]
日本語版早く

695 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 23:00:17.64 .net]
>>684
実際、実務でOCaml使っている人たちが書いてるからね



696 名前:デフォルトの名無しさん [2013/09/15(日) 23:02:44.61 .net]
って英語版も12月発売な上に
日本語版ってそれから1年後ぐらいになるのか

697 名前:デフォルトの名無しさん [2013/09/15(日) 23:05:28.42 .net]
普段使いってどういうこと?
スクリプト言語みたいに
ちょこちょこっとのコーディングもOCamlって事?

698 名前:デフォルトの名無しさん [2013/09/15(日) 23:15:21.68 .net]
あー やっぱLinuxかぁ

699 名前:デフォルトの名無しさん mailto:sage [2013/09/16(月) 00:03:20.35 .net]
プログラミング演習のようなの実装させるより
Coreの拡張モジュールやp4使わせてるし
標準でやれることでもJane系にもっと便利なのあれば使ってる

700 名前:デフォルトの名無しさん [2013/09/16(月) 16:10:19.60 .net]
opamってlinuxの64bit専用?!

701 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 01:27:30.95 .net]
あー opam installで途中で止まるー
もう寝る 

702 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 03:26:52.06 .net]
アパーム!!

703 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 09:53:15.37 .net]
>>692 エラーメッセージはなんて出てますか? #opam

704 名前:デフォルトの名無しさん [2013/09/17(火) 12:09:35.38 .net]
>>694
寝て起きたら終わってた


エラーメッセージらしきものが出てたら
まだググればなんとなく解決の糸口を探せるんだけど
止まったように見えるのは勘弁してほしい・・・

705 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 12:15:30.59 .net]
Ubuntuだと入ってるのかもしらんが
Lubuntu入れたからm4ってのが足りなくて進まないのに難儀したわぁ



706 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 12:36:12.34 .net]
とりあえず opamからutopとcore入れたけど
他に入れといた方がいいってのある?

707 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 14:31:45.87 .net]
asyncとか?

708 名前:デフォルトの名無しさん [2013/09/17(火) 20:04:07.17 .net]
open Core.Std しても
ウンともスンとも言わないのはどうして?

709 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 20:37:23.49 .net]
toplevelなら最後に;;付けないと評価されないぞ。

710 名前:デフォルトの名無しさん mailto:sage [2013/09/17(火) 21:34:31.77 .net]
付けてもダメ

711 名前:デフォルトの名無しさん [2013/09/18(水) 10:24:04.40 .net]
OSの問題か?
UbuntuでbatteriesとかCore使えてる人いますか?

712 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 10:42:31.06 .net]
違うと思うけど
標準のモジュールは使える?
open List;;とか

713 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 11:54:58.58 .net]
open List;;も
#load "nums.cma";;
も行ける

714 名前:デフォルトの名無しさん [2013/09/18(水) 17:03:13.40 .net]
#use "topfind";;
#require "batteries";;
open Batteries;;

でバッテリーつかえたぁぁぁ
疲れた
でもCoreはスーパーユーザーやないと使えないんだけど
emacsからスーパーユーザーってどうするんだ?

715 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 17:09:49.70 .net]
su emacs # ?



716 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 17:22:01.73 .net]
ってかここで聞く事じゃないけど
.emacsなんてなんだよ・・意味不明

717 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 02:32:35.94 .net]
可能性1. Coreライブラリのパーミション指定がおかしいため、通常ユーザーでは読めない。(あまり現実的じゃない)
可能性2. opamをsudoで実行した。
可能性3. Ubuntuリポジトリにあるcoreパッケージをインストールした一方で、opam+findlibを個人権限で導入し、
      そのため/usr/lib/ocaml/以下をfindlibが探していない。

可能性3なら、~/.opam/system/lib/findlib.confを編集することで解決する。

718 名前:デフォルトの名無しさん [2013/09/19(木) 09:33:14.80 .net]
できた!ありがトン

端末たちあげたら先ず初めになんでも
sudo -iしてたのがダメだったのかなぁ

utopだと出来るけどemacsだと
Error: Reference to undefined global Conditionsってでる
うーん emacsの勉強が必要だなぁ
core_kernelだと大丈夫なのはなぜなんだぜ?
coreとcore_kernelって同じもの?だよね

719 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 16:09:42.28 .net]
>>709
/home/fuga/.opam/system/lib/findlib.conf
------------------------------------
destdir="/home/fuga/.opam/system/lib"
path="/usr/lib/ocaml:/home/fuga/.opam/system/lib"
ocamlc="ocamlc.opt"
ocamlopt="ocamlopt.opt"
ocamldep="ocamldep.opt"
------------------------------------
pathをちゃんとしてれば、Linuxディストリビューションが提供するocamlライブラリとopamで個人利用のライブラリが併用できる。
普通にopam導入したら/usr/lib/ocaml以下を無視して全部~/.opam以下に入れようとしてくる。

面倒だから俺もちゃんとしてない(findlibがシステムとユーザー両方にあって気持ち悪い)が、
OCAMLFIND_CONFを指定したり何だりすればいいらしい。気が向いたら試してみてください。

720 名前:デフォルトの名無しさん mailto:sage [2013/09/20(金) 02:37:57.07 .net]
>>707
emacsの設定ファイルだよ。弄ってる間に学生生活が終わった。

721 名前:デフォルトの名無しさん mailto:sage [2013/09/21(土) 18:47:36.60 .net]
opamの1.1.0betaが出てるね

722 名前:デフォルトの名無しさん mailto:sage [2013/09/25(水) 00:38:24.09 .net]
https://twitter.com/cliffordbeshers/status/382505685084160001
ICFPの季節か

723 名前:デフォルトの名無しさん [2013/09/28(土) 08:17:20.19 .net]
SML#の話題ってここでいいの?

724 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 09:00:06.71 .net]
いいよ

725 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 18:49:36.94 .net]
SML#のページにあったスライドより:
SML# は,Cやデータベースとの連携を備えた「ふつうの言語」を目指すML系関数型言語です.

SQLをそのまま使える「ふつうの言語」...こいつ頭がお詳しいぜ!
C、SQL、MLっていうのは欲張りだな。polyglotは楽しめるのかもしれんが。



726 名前:667 [2013/09/30(月) 10:28:11.89 .net]
let rec add_h a = function
[] -> []
| h::t -> (a::h) :: add_h a t;;

let rec powerset = function
[] -> [[]]
| h::t -> let pt = powerset t in
pt @ add_h h pt;;

let nedan_list list goukei =
List.filter (fun xs -> List.fold_left (+) 0 xs = goukei) (powerset list);;

nedan_list [100;350;620;705] 720;;


過去スレにいいヒントがあったのでそれを使って
やりたい事を実現できました。
OCamlの素晴らしさを実感するとともに
もっと良い方法があれば教えてください。

727 名前:667 [2013/09/30(月) 10:36:53.22 .net]
あー 数がちょっと増えるとすぐオーバーフローしちゃう
これはダメだぁ・・・

728 名前:667 mailto:sage [2013/09/30(月) 11:26:09.48 .net]
let rec powerset = function
| [] -> [[]]
| h::t -> List.fold_left (fun xs t -> (h::t)::t::xs) [] (powerset t);;

あ、自己解決
こうすれば20数個行ける

729 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 17:56:59.75 .net]
ごっちゃになってたけど
print_string "hello"; print_newline ();;

print_endline "hello"
が同じ意味なんだな

print_string "hello\n" が普通の書き方?

730 名前:デフォルトの名無しさん mailto:sage [2013/10/04(金) 23:18:06.53 .net]
その程度ならどれも意味がすぐ分かるから、特に伝統は無い。

改行コードはOS毎にLF+CRだったりLFだったりするけど、そこら辺はどう考慮されているんだろう。
Linuxだと\nで改行、\rで現在の行を消して先頭からやり直し、みたいだけど。他のOSでも統一

731 名前:されてんのかね? []
[ここ壊れてます]

732 名前:デフォルトの名無しさん [2013/10/05(土) 09:27:34.70 .net]
副作用にも色々表現方法があって迷うなぁ
まぁOCamlはそれがいいんだろうけど

733 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 14:18:01.03 .net]
文字列だけなら print_string とか print_endline とかでいいだろうけど、
数値とか含むのを出力するときはどうするのがスマートなんだろう?
俺はだいたい Printf.printf を使ってしまうのだけど。

734 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 14:42:49.03 .net]
>>721
間違ってる
Windows は CR+LF すなわち現在行を消して先頭に戻してから改行するのだッ

735 名前:デフォルトの名無しさん mailto:sage [2013/10/05(土) 14:51:34.09 .net]
> Linuxだと\nで改行、\rで現在の行を消して先頭からやり直し、
OSのアプリが, 慣習的に "\n" を論理改行文字として扱ってる(tty ドライバーも
このように扱いやすく作ってある)だけで, 端末制御として使う CR だとか LF とは
分けて考えるべきだと思うよ.

実際に tty を raw モードに設定すると, CR - LF("\r\n") を "\n" にマップする
作業はアプリの仕事になる.

端末から見た, 各制御文字の役割は以下であってそれ以外の何者でもない
CR: カーソルを行の先頭に戻す,
LF: カーソルを次の行に移動する(カラムは移動しない)



736 名前:デフォルトの名無しさん [2013/10/05(土) 17:25:39.93 .net]
ocamlのcryptokit使おうとしたら、エラーになるんだがなんでなんだぜ。

Fatal error: cannot load shared library dllcryptokit_stubs
Reason: dllcryptokit_stubs.so: cannot open shared object file: No such file or directory

737 名前:デフォルトの名無しさん [2013/10/06(日) 08:19:42.15 .net]
#ocaml #opam 自己解決したっす dllcryptokit_stubs.so はopamゆーざーなら以下の環境変数の設定が必要っぽい
export CAML_LD_LIBRARY_PATH=~/.opam/system/lib/stublibs/

738 名前:デフォルトの名無しさん [2013/10/09(水) 00:18:05.42 .net]
なんかopamも便利なんだか不便なんだかわからんな

739 名前:デフォルトの名無しさん [2013/10/10(木) 12:26:47.83 .net]
フィボナッチ計算させるときに
メモ化するのもアキュムレータ使うのも
同じ振る舞いな気がするんだが
何か違うのかな?

740 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 13:44:52.77 .net]
複数回呼び出したら違うんじゃないの

741 名前:デフォルトの名無しさん [2013/10/10(木) 14:11:03.39 .net]
それぞれの f(n)までの値をそれぞれ1回ずつ計算して
テーブルに入れるかレコードに入れるかの違いだから
計算回数は同じじゃね?

742 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 18:11:17.89 .net]
fibを何回か呼ぶことを言ってるんじゃねぇの

743 名前:デフォルトの名無しさん [2013/10/10(木) 18:49:43.04 .net]
呼ぶ回数=計算回数じゃないの?
どっちもO(n)っぽいんだけど

744 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 19:24:41.41 .net]
fib(n) = fib(n-1) + fib(n-2)
fib(n-2)は呼ばれるが、計算済みだから新に計算はしないってことでしょ。

745 名前:デフォルトの名無しさん [2013/10/10(木) 21:27:14.82 .net]
そういう二重再帰じゃない方のフィボナッチだよ



746 名前:デフォルトの名無しさん [2013/10/10(木) 21:50:36.16 .net]
let fib x =
let rec fib_sub (x, accumulator1, accumulator2) =
if x = 0 then accumulator1
else
fib_sub (x - 1, accumulator1 + accumulator2, accumulator1)
in
fib_sub (x, 1, 0)

こういう感じでアキュムレータ使うようなフィボナッチ

747 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 23:36:42.55 .net]
何が言いたいのかわからん
末尾再帰のアキュムレータだろうが、
fib nをm回呼び出す場合メモ化ならO(m+n)だろ

748 名前:デフォルトの名無しさん [2013/10/11(金) 01:37:05.82 .net]
>>734この
二重再帰の計算オーダーはそうじゃないだろ??

749 名前:デフォルトの名無しさん mailto:sage [2013/10/11(金) 02:57:20.14 .net]
>>735
>>738
メモ化のコード書いてくれないとわからない。
あと計算オーダーはそうじゃないのそうって何?

750 名前:デフォルトの名無しさん mailto:sage [2013/10/11(金) 03:24:27.66 .net]
>>738
>>734の場合でも、f(n)はf(n-1), f(n-2)がメモ化されている場合常にO(1)
メモ化していない場合(最初の一回目)は再帰計算だからO(n)
これはわかるな?

その後 再帰メモ化版のfib(n)は、
それまでn以上の値が呼び出されていたならO(1)であり、
fib nをm回呼び出すならO(m)、2つ合わせて O(m+n)

アキュムレータだけの場合、fib(n)は "常に" O(n)
つまりfib nをm回呼び出すならO(nm)
わかったか?

751 名前:デフォルトの名無しさん mailto:sage [2013/10/11(金) 04:17:04.97 .net]
HaMLet がまさかのニューバージョン。

www.mpi-sws.org/~rossberg/hamlet/

752 名前:デフォルトの名無しさん [2013/10/11(金) 10:20:41.62 .net]
>>740
あー >>734はメモ化の再帰バージョンの話ね
理解した

とすると
>>729この違いは
使い捨てならアキュムバージョンは
簡潔に書けて早く
使いまわすならメモ化した方が
再呼び出しは早くていいって感じか

753 名前:デフォルトの名無しさん [2013/10/11(金) 19:30:47.32 .net]
SMLも開発すすんでるんだな

754 名前:デフォルトの名無しさん mailto:sage [2013/10/14(月) 18:44:12.10 .net]
www.pllab.riec.tohoku.ac.jp/smlsharp/docs/1.0/ja/Ch1.S1.xhtml
SMLの開発って、もしかしてSML#のこと?

755 名前:デフォルトの名無しさん mailto:sage [2013/10/14(月) 18:45:23.58 .net]
あ、上のhamletのことか。



756 名前:デフォルトの名無しさん [2013/10/14(月) 18:54:06.65 .net]
SML#は64ビット対応せんのかな。結構期待してるんだけど。

757 名前:デフォルトの名無しさん [2013/10/15(火) 01:40:51.77 .net]
SML/NJとかも

758 名前:デフォルトの名無しさん [2013/10/15(火) 01:52:43.43 .net]
Standard SMLってなんだろ?

759 名前:デフォルトの名無しさん [2013/10/15(火) 15:17:19.69 .net]
int型のmaxって1073741823ですよね
これを超えたらBig_intに切り替えたいんですが
int型の計算でmax_intを超えたかどうかの判定って
どうやったらいいですか?

760 名前:デフォルトの名無しさん mailto:sage [2013/10/15(火) 17:14:51.41 .net]
無理じゃね
最初からBig_int使えばいいんじゃね

761 名前:デフォルトの名無しさん mailto:sage [2013/10/15(火) 18:42:26.56 .net]
大学の研究室のプロジェクトだと、パワーのある院生がいる時にどかっと
進んだりするんだよなぁ。

762 名前:デフォルトの名無しさん [2013/10/15(火) 22:18:09.71 .net]
キャリーフラグを無視しない高級言語ってごくわずかしかないよね。

763 名前:デフォルトの名無しさん mailto:sage [2013/10/15(火) 23:25:06.01 .net]
そもそも1bit分フラグに使ってるからキャリーフラグなんて役に立たんでしょ
SML#はどうか知らんけど

764 名前:デフォルトの名無しさん mailto:sage [2013/10/16(水) 22:57:21.15 .net]
C++
blog.regehr.org/archives/593
ocaml batteriesには、SafeIntというのがあるらしい。参考になるかもよ。
dutherenverseauborddelatable.wordpress.com/2008/08/27/whats-up-with-batteries/

765 名前:デフォルトの名無しさん [2013/10/18(金) 10:52:33.25 .net]
オブジェクトがさっぱりわからん
レコードと何が違うんだ・・・



766 名前:デフォルトの名無しさん [2013/10/18(金) 12:04:36.71 .net]
Obj.magic使えば
型なんて関係無くなる?

767 名前:デフォルトの名無しさん [2013/10/18(金) 12:12:18.87 .net]
[Obj.magic 'a'; Obj.magic "abc"; Obj.magic 123];;
すげー リストに型が違っても入るぞ
何に使えるんだろ?

768 名前:デフォルトの名無しさん [2013/10/18(金) 12:52:31.16 .net]
Obj.magic 'a' + 1 ;;
すげー こんなのもできるんだwwww
関数型言語界のgotoやで

769 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 14:08:58.82 .net]
奇跡も魔法もあるんだよ。

770 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 18:35:29.49 .net]
ただしよくわからんで使うと死ぬ

771 名前:デフォルトの名無しさん [2013/10/18(金) 18:46:15.03 .net]
OCamlって最強の言語じゃね?
なんでみんなやらないんだろ

772 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 18:49:32.53 .net]
変なライセンスだから

773 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 18:53:24.02 .net]
intが1ビット少ないとか、モジュールの仕様上スマートリンクができないとか
ファーストクラスモジュールでOCamlのOたるオブジェクトがゴミになりましたとか
そのファーストクラスモジュールは後付けで構文がカオスですとか、あと+.(笑)とかGC遅いとか
ケチを付けようと思ったらいくらでも付けられるからなあ

774 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 19:13:13.78 .net]
Windows版の更新サボってるのが一番の原因だな

775 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 19:31:42.10 .net]
みんなって誰だよ



776 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 19:33:25.20 .net]
研究室ではよく使ってる

777 名前:デフォルトの名無しさん [2013/10/18(金) 20:02:22.74 .net]
>>765
健常者の集合

778 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 22:46:49.64 .net]
言語の素性はともかくマンパワーは全然足りてないしな

779 名前:デフォルトの名無しさん [2013/10/18(金) 23:43:15.36 .net]
スマートリンクってなんぞ?

780 名前:デフォルトの名無しさん mailto:sage [2013/10/18(金) 23:50:11.98 .net]
sageたら教えてやる

781 名前:sage [2013/10/18(金) 23:56:08.97 .net]
教えてください

782 名前:sega [2013/10/19(土) 19:03:49.62 .net]
俺にも教えて

783 名前:デフォルトの名無しさん mailto:sage [2013/10/19(土) 22:25:27.91 .net]
じゃあおれも

784 名前:デフォルトの名無しさん [2013/10/28(月) 11:48:04.04 .net]
汎関数と高階関数って同じ意味ですか?

785 名前:デフォルトの名無しさん [2013/10/28(月) 13:22:54.90 .net]
ちがいます



786 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 13:38:38.58 .net]
おなじです

787 名前:デフォルトの名無しさん [2013/10/28(月) 13:43:33.45 .net]
どっちだよ・・・






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<241KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef