関数型言語MLについて語るスレッドです。
MLは、確固とした理論的背景を持つ言語でありながら、
現実的なソフトの開発にも使用できる実用性を備えた言語です。
また、プログラミングの初心者が最初に学習する言語としても優れています。
総本山
Standard ML http://www.smlnj.org/
Objective Caml http://caml.inria.fr/ocaml/
前スレ
関数型言語ML(SML, OCaml, etc.), Part 5
http://pc12.2ch.net/test/read.cgi/tech/1186292994/
探検
関数型言語ML (SML, OCaml, etc.), Part 6
■ このスレッドは過去ログ倉庫に格納されています
2009/06/15(月) 07:15:21
693デフォルトの名無しさん
2013/09/17(火) 03:26:52.06 アパーム!!
694デフォルトの名無しさん
2013/09/17(火) 09:53:15.37 >>692 エラーメッセージはなんて出てますか? #opam
695デフォルトの名無しさん
2013/09/17(火) 12:09:35.38696デフォルトの名無しさん
2013/09/17(火) 12:15:30.59 Ubuntuだと入ってるのかもしらんが
Lubuntu入れたからm4ってのが足りなくて進まないのに難儀したわぁ
Lubuntu入れたからm4ってのが足りなくて進まないのに難儀したわぁ
697デフォルトの名無しさん
2013/09/17(火) 12:36:12.34 とりあえず opamからutopとcore入れたけど
他に入れといた方がいいってのある?
他に入れといた方がいいってのある?
698デフォルトの名無しさん
2013/09/17(火) 14:31:45.87 asyncとか?
699デフォルトの名無しさん
2013/09/17(火) 20:04:07.17 open Core.Std しても
ウンともスンとも言わないのはどうして?
ウンともスンとも言わないのはどうして?
700デフォルトの名無しさん
2013/09/17(火) 20:37:23.49 toplevelなら最後に;;付けないと評価されないぞ。
701デフォルトの名無しさん
2013/09/17(火) 21:34:31.77 付けてもダメ
702デフォルトの名無しさん
2013/09/18(水) 10:24:04.40 OSの問題か?
UbuntuでbatteriesとかCore使えてる人いますか?
UbuntuでbatteriesとかCore使えてる人いますか?
703デフォルトの名無しさん
2013/09/18(水) 10:42:31.06 違うと思うけど
標準のモジュールは使える?
open List;;とか
標準のモジュールは使える?
open List;;とか
704デフォルトの名無しさん
2013/09/18(水) 11:54:58.58 open List;;も
#load "nums.cma";;
も行ける
#load "nums.cma";;
も行ける
705デフォルトの名無しさん
2013/09/18(水) 17:03:13.40 #use "topfind";;
#require "batteries";;
open Batteries;;
でバッテリーつかえたぁぁぁ
疲れた
でもCoreはスーパーユーザーやないと使えないんだけど
emacsからスーパーユーザーってどうするんだ?
#require "batteries";;
open Batteries;;
でバッテリーつかえたぁぁぁ
疲れた
でもCoreはスーパーユーザーやないと使えないんだけど
emacsからスーパーユーザーってどうするんだ?
706デフォルトの名無しさん
2013/09/18(水) 17:09:49.70 su emacs # ?
707デフォルトの名無しさん
2013/09/18(水) 17:22:01.73 ってかここで聞く事じゃないけど
.emacsなんてなんだよ・・意味不明
.emacsなんてなんだよ・・意味不明
708デフォルトの名無しさん
2013/09/19(木) 02:32:35.94 可能性1. Coreライブラリのパーミション指定がおかしいため、通常ユーザーでは読めない。(あまり現実的じゃない)
可能性2. opamをsudoで実行した。
可能性3. Ubuntuリポジトリにあるcoreパッケージをインストールした一方で、opam+findlibを個人権限で導入し、
そのため/usr/lib/ocaml/以下をfindlibが探していない。
可能性3なら、~/.opam/system/lib/findlib.confを編集することで解決する。
可能性2. opamをsudoで実行した。
可能性3. Ubuntuリポジトリにあるcoreパッケージをインストールした一方で、opam+findlibを個人権限で導入し、
そのため/usr/lib/ocaml/以下をfindlibが探していない。
可能性3なら、~/.opam/system/lib/findlib.confを編集することで解決する。
709デフォルトの名無しさん
2013/09/19(木) 09:33:14.80 できた!ありがトン
端末たちあげたら先ず初めになんでも
sudo -iしてたのがダメだったのかなぁ
utopだと出来るけどemacsだと
Error: Reference to undefined global Conditionsってでる
うーん emacsの勉強が必要だなぁ
core_kernelだと大丈夫なのはなぜなんだぜ?
coreとcore_kernelって同じもの?だよね
端末たちあげたら先ず初めになんでも
sudo -iしてたのがダメだったのかなぁ
utopだと出来るけどemacsだと
Error: Reference to undefined global Conditionsってでる
うーん emacsの勉強が必要だなぁ
core_kernelだと大丈夫なのはなぜなんだぜ?
coreとcore_kernelって同じもの?だよね
710デフォルトの名無しさん
2013/09/19(木) 16:09:42.28 >>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を指定したり何だりすればいいらしい。気が向いたら試してみてください。
/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を指定したり何だりすればいいらしい。気が向いたら試してみてください。
711デフォルトの名無しさん
2013/09/20(金) 02:37:57.07 >>707
emacsの設定ファイルだよ。弄ってる間に学生生活が終わった。
emacsの設定ファイルだよ。弄ってる間に学生生活が終わった。
712デフォルトの名無しさん
2013/09/21(土) 18:47:36.60 opamの1.1.0betaが出てるね
713デフォルトの名無しさん
2013/09/25(水) 00:38:24.09714デフォルトの名無しさん
2013/09/28(土) 08:17:20.19 SML#の話題ってここでいいの?
715デフォルトの名無しさん
2013/09/28(土) 09:00:06.71 いいよ
716デフォルトの名無しさん
2013/09/28(土) 18:49:36.94 SML#のページにあったスライドより:
SML# は,Cやデータベースとの連携を備えた「ふつうの言語」を目指すML系関数型言語です.
SQLをそのまま使える「ふつうの言語」...こいつ頭がお詳しいぜ!
C、SQL、MLっていうのは欲張りだな。polyglotは楽しめるのかもしれんが。
SML# は,Cやデータベースとの連携を備えた「ふつうの言語」を目指すML系関数型言語です.
SQLをそのまま使える「ふつうの言語」...こいつ頭がお詳しいぜ!
C、SQL、MLっていうのは欲張りだな。polyglotは楽しめるのかもしれんが。
717667
2013/09/30(月) 10:28:11.89 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の素晴らしさを実感するとともに
もっと良い方法があれば教えてください。
[] -> []
| 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の素晴らしさを実感するとともに
もっと良い方法があれば教えてください。
718667
2013/09/30(月) 10:36:53.22 あー 数がちょっと増えるとすぐオーバーフローしちゃう
これはダメだぁ・・・
これはダメだぁ・・・
719667
2013/09/30(月) 11:26:09.48 let rec powerset = function
| [] -> [[]]
| h::t -> List.fold_left (fun xs t -> (h::t)::t::xs) [] (powerset t);;
あ、自己解決
こうすれば20数個行ける
| [] -> [[]]
| h::t -> List.fold_left (fun xs t -> (h::t)::t::xs) [] (powerset t);;
あ、自己解決
こうすれば20数個行ける
720デフォルトの名無しさん
2013/10/01(火) 17:56:59.75 ごっちゃになってたけど
print_string "hello"; print_newline ();;
と
print_endline "hello"
が同じ意味なんだな
print_string "hello\n" が普通の書き方?
print_string "hello"; print_newline ();;
と
print_endline "hello"
が同じ意味なんだな
print_string "hello\n" が普通の書き方?
721デフォルトの名無しさん
2013/10/04(金) 23:18:06.53 その程度ならどれも意味がすぐ分かるから、特に伝統は無い。
改行コードはOS毎にLF+CRだったりLFだったりするけど、そこら辺はどう考慮されているんだろう。
Linuxだと\nで改行、\rで現在の行を消して先頭からやり直し、みたいだけど。他のOSでも統一されてんのかね?
改行コードはOS毎にLF+CRだったりLFだったりするけど、そこら辺はどう考慮されているんだろう。
Linuxだと\nで改行、\rで現在の行を消して先頭からやり直し、みたいだけど。他のOSでも統一されてんのかね?
722デフォルトの名無しさん
2013/10/05(土) 09:27:34.70 副作用にも色々表現方法があって迷うなぁ
まぁOCamlはそれがいいんだろうけど
まぁOCamlはそれがいいんだろうけど
723デフォルトの名無しさん
2013/10/05(土) 14:18:01.03 文字列だけなら print_string とか print_endline とかでいいだろうけど、
数値とか含むのを出力するときはどうするのがスマートなんだろう?
俺はだいたい Printf.printf を使ってしまうのだけど。
数値とか含むのを出力するときはどうするのがスマートなんだろう?
俺はだいたい Printf.printf を使ってしまうのだけど。
724デフォルトの名無しさん
2013/10/05(土) 14:42:49.03725デフォルトの名無しさん
2013/10/05(土) 14:51:34.09 > Linuxだと\nで改行、\rで現在の行を消して先頭からやり直し、
OSのアプリが, 慣習的に "\n" を論理改行文字として扱ってる(tty ドライバーも
このように扱いやすく作ってある)だけで, 端末制御として使う CR だとか LF とは
分けて考えるべきだと思うよ.
実際に tty を raw モードに設定すると, CR - LF("\r\n") を "\n" にマップする
作業はアプリの仕事になる.
端末から見た, 各制御文字の役割は以下であってそれ以外の何者でもない
CR: カーソルを行の先頭に戻す,
LF: カーソルを次の行に移動する(カラムは移動しない)
OSのアプリが, 慣習的に "\n" を論理改行文字として扱ってる(tty ドライバーも
このように扱いやすく作ってある)だけで, 端末制御として使う CR だとか LF とは
分けて考えるべきだと思うよ.
実際に tty を raw モードに設定すると, CR - LF("\r\n") を "\n" にマップする
作業はアプリの仕事になる.
端末から見た, 各制御文字の役割は以下であってそれ以外の何者でもない
CR: カーソルを行の先頭に戻す,
LF: カーソルを次の行に移動する(カラムは移動しない)
726デフォルトの名無しさん
2013/10/05(土) 17:25:39.93 ocamlのcryptokit使おうとしたら、エラーになるんだがなんでなんだぜ。
Fatal error: cannot load shared library dllcryptokit_stubs
Reason: dllcryptokit_stubs.so: cannot open shared object file: No such file or directory
Fatal error: cannot load shared library dllcryptokit_stubs
Reason: dllcryptokit_stubs.so: cannot open shared object file: No such file or directory
727デフォルトの名無しさん
2013/10/06(日) 08:19:42.15 #ocaml #opam 自己解決したっす dllcryptokit_stubs.so はopamゆーざーなら以下の環境変数の設定が必要っぽい
export CAML_LD_LIBRARY_PATH=~/.opam/system/lib/stublibs/
export CAML_LD_LIBRARY_PATH=~/.opam/system/lib/stublibs/
728デフォルトの名無しさん
2013/10/09(水) 00:18:05.42 なんかopamも便利なんだか不便なんだかわからんな
729デフォルトの名無しさん
2013/10/10(木) 12:26:47.83 フィボナッチ計算させるときに
メモ化するのもアキュムレータ使うのも
同じ振る舞いな気がするんだが
何か違うのかな?
メモ化するのもアキュムレータ使うのも
同じ振る舞いな気がするんだが
何か違うのかな?
730デフォルトの名無しさん
2013/10/10(木) 13:44:52.77 複数回呼び出したら違うんじゃないの
731デフォルトの名無しさん
2013/10/10(木) 14:11:03.39 それぞれの f(n)までの値をそれぞれ1回ずつ計算して
テーブルに入れるかレコードに入れるかの違いだから
計算回数は同じじゃね?
テーブルに入れるかレコードに入れるかの違いだから
計算回数は同じじゃね?
732デフォルトの名無しさん
2013/10/10(木) 18:11:17.89 fibを何回か呼ぶことを言ってるんじゃねぇの
733デフォルトの名無しさん
2013/10/10(木) 18:49:43.04 呼ぶ回数=計算回数じゃないの?
どっちもO(n)っぽいんだけど
どっちもO(n)っぽいんだけど
734デフォルトの名無しさん
2013/10/10(木) 19:24:41.41 fib(n) = fib(n-1) + fib(n-2)
fib(n-2)は呼ばれるが、計算済みだから新に計算はしないってことでしょ。
fib(n-2)は呼ばれるが、計算済みだから新に計算はしないってことでしょ。
735デフォルトの名無しさん
2013/10/10(木) 21:27:14.82 そういう二重再帰じゃない方のフィボナッチだよ
736デフォルトの名無しさん
2013/10/10(木) 21:50:36.16 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)
こういう感じでアキュムレータ使うようなフィボナッチ
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)
こういう感じでアキュムレータ使うようなフィボナッチ
737デフォルトの名無しさん
2013/10/10(木) 23:36:42.55 何が言いたいのかわからん
末尾再帰のアキュムレータだろうが、
fib nをm回呼び出す場合メモ化ならO(m+n)だろ
末尾再帰のアキュムレータだろうが、
fib nをm回呼び出す場合メモ化ならO(m+n)だろ
738デフォルトの名無しさん
2013/10/11(金) 01:37:05.82 >>734この
二重再帰の計算オーダーはそうじゃないだろ??
二重再帰の計算オーダーはそうじゃないだろ??
739デフォルトの名無しさん
2013/10/11(金) 02:57:20.14740デフォルトの名無しさん
2013/10/11(金) 03:24:27.66741デフォルトの名無しさん
2013/10/11(金) 04:17:04.97742デフォルトの名無しさん
2013/10/11(金) 10:20:41.62743デフォルトの名無しさん
2013/10/11(金) 19:30:47.32 SMLも開発すすんでるんだな
744デフォルトの名無しさん
2013/10/14(月) 18:44:12.10 http://www.pllab.riec.tohoku.ac.jp/smlsharp/docs/1.0/ja/Ch1.S1.xhtml
SMLの開発って、もしかしてSML#のこと?
SMLの開発って、もしかしてSML#のこと?
745デフォルトの名無しさん
2013/10/14(月) 18:45:23.58 あ、上のhamletのことか。
746デフォルトの名無しさん
2013/10/14(月) 18:54:06.65 SML#は64ビット対応せんのかな。結構期待してるんだけど。
747デフォルトの名無しさん
2013/10/15(火) 01:40:51.77 SML/NJとかも
748デフォルトの名無しさん
2013/10/15(火) 01:52:43.43 Standard SMLってなんだろ?
749デフォルトの名無しさん
2013/10/15(火) 15:17:19.69 int型のmaxって1073741823ですよね
これを超えたらBig_intに切り替えたいんですが
int型の計算でmax_intを超えたかどうかの判定って
どうやったらいいですか?
これを超えたらBig_intに切り替えたいんですが
int型の計算でmax_intを超えたかどうかの判定って
どうやったらいいですか?
750デフォルトの名無しさん
2013/10/15(火) 17:14:51.41 無理じゃね
最初からBig_int使えばいいんじゃね
最初からBig_int使えばいいんじゃね
751デフォルトの名無しさん
2013/10/15(火) 18:42:26.56 大学の研究室のプロジェクトだと、パワーのある院生がいる時にどかっと
進んだりするんだよなぁ。
進んだりするんだよなぁ。
752デフォルトの名無しさん
2013/10/15(火) 22:18:09.71 キャリーフラグを無視しない高級言語ってごくわずかしかないよね。
753デフォルトの名無しさん
2013/10/15(火) 23:25:06.01 そもそも1bit分フラグに使ってるからキャリーフラグなんて役に立たんでしょ
SML#はどうか知らんけど
SML#はどうか知らんけど
754デフォルトの名無しさん
2013/10/16(水) 22:57:21.15 C++
http://blog.regehr.org/archives/593
ocaml batteriesには、SafeIntというのがあるらしい。参考になるかもよ。
http://dutherenverseauborddelatable.wordpress.com/2008/08/27/whats-up-with-batteries/
http://blog.regehr.org/archives/593
ocaml batteriesには、SafeIntというのがあるらしい。参考になるかもよ。
http://dutherenverseauborddelatable.wordpress.com/2008/08/27/whats-up-with-batteries/
755デフォルトの名無しさん
2013/10/18(金) 10:52:33.25 オブジェクトがさっぱりわからん
レコードと何が違うんだ・・・
レコードと何が違うんだ・・・
756デフォルトの名無しさん
2013/10/18(金) 12:04:36.71 Obj.magic使えば
型なんて関係無くなる?
型なんて関係無くなる?
757デフォルトの名無しさん
2013/10/18(金) 12:12:18.87 [Obj.magic 'a'; Obj.magic "abc"; Obj.magic 123];;
すげー リストに型が違っても入るぞ
何に使えるんだろ?
すげー リストに型が違っても入るぞ
何に使えるんだろ?
758デフォルトの名無しさん
2013/10/18(金) 12:52:31.16 Obj.magic 'a' + 1 ;;
すげー こんなのもできるんだwwww
関数型言語界のgotoやで
すげー こんなのもできるんだwwww
関数型言語界のgotoやで
759デフォルトの名無しさん
2013/10/18(金) 14:08:58.82 奇跡も魔法もあるんだよ。
760デフォルトの名無しさん
2013/10/18(金) 18:35:29.49 ただしよくわからんで使うと死ぬ
761デフォルトの名無しさん
2013/10/18(金) 18:46:15.03 OCamlって最強の言語じゃね?
なんでみんなやらないんだろ
なんでみんなやらないんだろ
762デフォルトの名無しさん
2013/10/18(金) 18:49:32.53 変なライセンスだから
763デフォルトの名無しさん
2013/10/18(金) 18:53:24.02 intが1ビット少ないとか、モジュールの仕様上スマートリンクができないとか
ファーストクラスモジュールでOCamlのOたるオブジェクトがゴミになりましたとか
そのファーストクラスモジュールは後付けで構文がカオスですとか、あと+.(笑)とかGC遅いとか
ケチを付けようと思ったらいくらでも付けられるからなあ
ファーストクラスモジュールでOCamlのOたるオブジェクトがゴミになりましたとか
そのファーストクラスモジュールは後付けで構文がカオスですとか、あと+.(笑)とかGC遅いとか
ケチを付けようと思ったらいくらでも付けられるからなあ
764デフォルトの名無しさん
2013/10/18(金) 19:13:13.78 Windows版の更新サボってるのが一番の原因だな
765デフォルトの名無しさん
2013/10/18(金) 19:31:42.10 みんなって誰だよ
766デフォルトの名無しさん
2013/10/18(金) 19:33:25.20 研究室ではよく使ってる
767デフォルトの名無しさん
2013/10/18(金) 20:02:22.74 >>765
健常者の集合
健常者の集合
768デフォルトの名無しさん
2013/10/18(金) 22:46:49.64 言語の素性はともかくマンパワーは全然足りてないしな
769デフォルトの名無しさん
2013/10/18(金) 23:43:15.36 スマートリンクってなんぞ?
770デフォルトの名無しさん
2013/10/18(金) 23:50:11.98 sageたら教えてやる
771sage
2013/10/18(金) 23:56:08.97 教えてください
772sega
2013/10/19(土) 19:03:49.62 俺にも教えて
773デフォルトの名無しさん
2013/10/19(土) 22:25:27.91 じゃあおれも
774デフォルトの名無しさん
2013/10/28(月) 11:48:04.04 汎関数と高階関数って同じ意味ですか?
775デフォルトの名無しさん
2013/10/28(月) 13:22:54.90 ちがいます
776デフォルトの名無しさん
2013/10/28(月) 13:38:38.58 おなじです
777デフォルトの名無しさん
2013/10/28(月) 13:43:33.45 どっちだよ・・・
778デフォルトの名無しさん
2013/10/28(月) 13:58:52.58 >>774
関数を計算の対象とすること、いいかえると、関数を引数として受け付けたり
関数を返す関数のことを「高階の関数」または「高階関数」という
さらに、高階関数の中で計算の対象が関数だけなものを「汎関数」という
つまり高階関数は広い概念で、汎関数は狭い概念
たとえば関数 map や filter は高階関数であるけれど、リストも計算対象だから汎関数ではない
それに対して、合成関数 o は高階関数であるし汎関数でもある
関数を計算の対象とすること、いいかえると、関数を引数として受け付けたり
関数を返す関数のことを「高階の関数」または「高階関数」という
さらに、高階関数の中で計算の対象が関数だけなものを「汎関数」という
つまり高階関数は広い概念で、汎関数は狭い概念
たとえば関数 map や filter は高階関数であるけれど、リストも計算対象だから汎関数ではない
それに対して、合成関数 o は高階関数であるし汎関数でもある
779デフォルトの名無しさん
2013/10/28(月) 14:26:11.39 let foo f g x = g (f x) ;;
val foo : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c = <fun>
って合成関数があったとして
'aの引数は計算対象外になるの?
val foo : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c = <fun>
って合成関数があったとして
'aの引数は計算対象外になるの?
780デフォルトの名無しさん
2013/10/28(月) 15:17:35.72781デフォルトの名無しさん
2013/10/28(月) 15:25:02.71 あと汎関数は量を返す物をいうはず。
だから合成関数は汎関数でなく、高階関数。
だから合成関数は汎関数でなく、高階関数。
782デフォルトの名無しさん
2013/10/28(月) 15:27:39.31 間違えた
合成関数を"返す" 関数は汎関数でなく、高階関数。
合成関数を"返す" 関数は汎関数でなく、高階関数。
783デフォルトの名無しさん
2013/10/28(月) 15:32:51.19 >>779
まず 'a は型変数だから、「'a の引数は...」という用法は日本語として不適切
で、もし質問の意図が「関数 foo の定義における第三引数 x は、関数 foo の計算対象外か?」
であるならば、答えは Yes
引数 x は関数 f の計算対象であるけれど、汎関数 foo の計算対象ではない
汎関数を定義する場合、>>779 も決して間違いではないが、以下のように書いたほうが、
「x は(fooの引数ではなく)無名関数の引数である」という意図が理解しやすいだろう(言語はSML)
- fun foo f g = fn x => g (f x);
> val ('a, 'b, 'c) foo = fn : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
>>781
では、その量を返すという汎関数の具体例を挙げてみてくれないか?
まず 'a は型変数だから、「'a の引数は...」という用法は日本語として不適切
で、もし質問の意図が「関数 foo の定義における第三引数 x は、関数 foo の計算対象外か?」
であるならば、答えは Yes
引数 x は関数 f の計算対象であるけれど、汎関数 foo の計算対象ではない
汎関数を定義する場合、>>779 も決して間違いではないが、以下のように書いたほうが、
「x は(fooの引数ではなく)無名関数の引数である」という意図が理解しやすいだろう(言語はSML)
- fun foo f g = fn x => g (f x);
> val ('a, 'b, 'c) foo = fn : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
>>781
では、その量を返すという汎関数の具体例を挙げてみてくれないか?
784デフォルトの名無しさん
2013/10/28(月) 16:06:23.87 例えばmapをばらしたときに
let rec map f ls = match ls with
[] -> []
| x::xs -> f x :: map f xs ;;
val : ('a -> 'b) -> 'a list -> 'b list = <fun>
たぶんこんな感じで再帰になってるけど
無名関数は再帰で書けないから
無名関数で書けたら汎関数でよい?
let rec map f ls = match ls with
[] -> []
| x::xs -> f x :: map f xs ;;
val : ('a -> 'b) -> 'a list -> 'b list = <fun>
たぶんこんな感じで再帰になってるけど
無名関数は再帰で書けないから
無名関数で書けたら汎関数でよい?
785デフォルトの名無しさん
2013/10/28(月) 16:10:19.68 >>783
>では、その量を返すという汎関数の具体例を挙げてみてくれないか?
なんで?
とりあえず、定義っぽいのは見つけたよ。
http://www.encyclopediaofmath.org/index.php/Functional
>では、その量を返すという汎関数の具体例を挙げてみてくれないか?
なんで?
とりあえず、定義っぽいのは見つけたよ。
http://www.encyclopediaofmath.org/index.php/Functional
786デフォルトの名無しさん
2013/10/28(月) 16:41:42.96 ん?schemeはYコンビネータを使って
Y = (λf . (λx . f (x x)) (λx . f (x x)))
無名再帰ができると書いてあるな
何が違うんだろ?動的言語だと出来るとか?
Y = (λf . (λx . f (x x)) (λx . f (x x)))
無名再帰ができると書いてあるな
何が違うんだろ?動的言語だと出来るとか?
787デフォルトの名無しさん
2013/10/28(月) 17:26:32.96 >>784
汎関数の定義に無名関数を使うことは多いけど、
だからといって、すべての無名関数を用いた定義が汎関数となる訳ではない
だから「無名関数で書けたら汎関数でよい?」という質問については No だ
ただし「引数としてある関数を渡すとmapと同等な無名関数を返す」汎用的な関数が
定義できるのであれば、その関数は汎関数であるといえるだろう
なお、再帰と汎関数は直交するから再帰を伴わない汎関数も存在する(たとえば合成関数 o)
したがって「再帰で書けたら汎関数でよい?」という質問についても No となる
>>785
数学における用語「汎関数」と計算機科学における「汎関数」をごっちゃにしているのでは?
で、ここは(数学板ではなく)プログラム板だ
汎関数の定義に無名関数を使うことは多いけど、
だからといって、すべての無名関数を用いた定義が汎関数となる訳ではない
だから「無名関数で書けたら汎関数でよい?」という質問については No だ
ただし「引数としてある関数を渡すとmapと同等な無名関数を返す」汎用的な関数が
定義できるのであれば、その関数は汎関数であるといえるだろう
なお、再帰と汎関数は直交するから再帰を伴わない汎関数も存在する(たとえば合成関数 o)
したがって「再帰で書けたら汎関数でよい?」という質問についても No となる
>>785
数学における用語「汎関数」と計算機科学における「汎関数」をごっちゃにしているのでは?
で、ここは(数学板ではなく)プログラム板だ
788デフォルトの名無しさん
2013/10/28(月) 17:37:07.70789デフォルトの名無しさん
2013/10/28(月) 19:17:55.24 同値再帰型なんてのもあるんだね
OCamlって最強言語じゃね?
OCamlって最強言語じゃね?
790デフォルトの名無しさん
2013/10/30(水) 09:26:41.50 高階関数のままと
簡約した形と
評価までの速度に違いがあるのかな?
見やすさで選ばれてるだけ?
簡約した形と
評価までの速度に違いがあるのかな?
見やすさで選ばれてるだけ?
791デフォルトの名無しさん
2013/10/30(水) 13:20:56.16 cygwin64bitにもOCaml登場
792デフォルトの名無しさん
2013/10/30(水) 19:40:53.15 簡約した形とは
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【悲報】日本人「俺以外の日本人が中国と戦ってくれるぞ!」 [616817505]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 維新の吉村代表「高市総理に中国総領事の国外退去を要請した。今後、知事として中国イベントには出席しない」 [359572271]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 【悲報】あまりにも高市早苗の頭が悪過ぎて「これは確かに野党が配慮して質問するべきだったのでは」と結論が出てしまう [517791167]
