トップページ⇒tech
61コメント20KB

関数型言語でGUIのメモ帳・電卓は作れるのか?

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/11/03(火) 16:35:43
関数型言語を勉強してわかったわ。
あれは数学。

普通のプログラム言語と同じような文字使っているけど違う。
小説家と始末書書いている人が同じ文字を使って書いているけど、
始末書かいていても、小説家とは言わない。
それと同じ。

どっちが上とか難しいとかそういう話じゃない。
まったく違うもの。数学だから数学者は数学(関数型言語)が得意なのが
理解できる。でも数学者はプログラム言語(C++とか)でGUIでメモ帳作ったり、
そういうことが得意なわけじゃない。こっちはプログラマの専門分野

わかったらなんかすっきりしたw
0002デフォルトの名無しさん2009/11/03(火) 16:38:59
関数型言語でOSは作れるのか?

つまりメモリ管理、プロセス管理
リソース管理(ハードウェアの状態管理)が
できるのか?
0003デフォルトの名無しさん2009/11/03(火) 16:43:04
己を知らざることや、知らぬことを
知っているように空想して知っていると思い込むことは
狂気にもっとも近い。

— クセノフォーン
0004デフォルトの名無しさん2009/11/03(火) 16:48:17
お前はクセノフォーン なのか?
0005デフォルトの名無しさん2009/11/03(火) 17:07:27
      ィ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙t,
     彡;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ
     イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;r''ソ~ヾ:;;;;;;゙i,
     t;;;;;;;リ~`゙ヾ、;;;;;;;;;;;;;;;;;;;;ノ    i,;;;;;;!
     ゙i,;;;;t    ヾ-‐''"~´_,,.ィ"゙  ヾ;;f^!   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ト.;;;;;》  =ニー-彡ニ''"~´,,...,,.  レ')l. < おまえは何を言っているんだ
     t゙ヾ;l   __,, .. ,,_   ,.テ:ro=r''"゙ !.f'l.   \____________
      ヽ.ヽ ー=rtσフ= ;  ('"^'=''′  リノ  
    ,,.. -‐ゝ.>、 `゙゙゙゙´ ,'  ヽ   . : :! /
 ~´ : : : : : `ヽ:.    ,rf :. . :.: j 、 . : : ト、.、
 : : : : : : : : : : ヽ、  /. .゙ー:、_,.r'゙: :ヽ. : :/ ヽ\、 
  :f: r: : : : : : : : !丶  r-、=一=''チ^  ,/   !:: : :`丶、_
  : /: : : : : : : : :! ヽ、  ゙ ''' ''¨´  /   ,i: : : l!: : : : :`ヽ、
 〃: :j: : : : : : : ゙i   `ヽ、..,,__,, :ィ"::   ,ノ:: : : : : : : : : : : :\
 ノ: : : : : : : : : : :丶   : : ::::::::: : : :   /: : : : : : : : : : : : : : : :\
0006デフォルトの名無しさん2009/11/03(火) 17:15:01
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0007デフォルトの名無しさん2009/11/03(火) 17:52:16
haskellで作ってなかったかな
気のせいかな
気のせいだったんだろうな
0008デフォルトの名無しさん2009/11/03(火) 19:43:03
つ House
http://programatica.cs.pdx.edu/House/
0009デフォルトの名無しさん2009/11/03(火) 19:50:09
関数型言語云々が問題なんじゃなくて
TkとかGUIライブラリがあるかどうかだけじゃないのか
0010デフォルトの名無しさん2009/11/03(火) 20:32:31
たぶん気のせいだよ、うん
ttp://wxhaskell.sourceforge.net/screenshots.html
0011デフォルトの名無しさん2009/11/06(金) 01:55:41
関数型言語で、(他の言語で書かれた)GUIライブラリを使うことはできても、
GUIライブラリを書くことは無理だろうな。
0012デフォルトの名無しさん2009/11/06(金) 02:48:51
Common Lisp は CLX という Xlib に相当するライブラリをネイティブで実装してるよ
CLIM というツールキットも実装されてる

まぁ Common Lisp を関数型言語に入れるのは反則な気もするけどね
0013デフォルトの名無しさん2009/11/06(金) 11:37:28
gui以前に、実行途中で外部との対話が発生するドメイン全般に向いてなくね?
0014デフォルトの名無しさん2009/11/06(金) 23:30:27
Yi http://haskell.org/haskellwiki/Yi
0015デフォルトの名無しさん2009/11/07(土) 13:00:53
関数型言語って関数型言語で書かれているのかな?
0016デフォルトの名無しさん2009/11/07(土) 13:24:03
>>13
どうしてそう思う?

>>15
関数型言語で書かれたソースを実行可能ファイルにするコンパイラが
関数型言語で書かれているかと言うことなら、少なくとも Haskell はそう。
他の関数型言語は知らん。
0017デフォルトの名無しさん2009/11/09(月) 01:11:50
対話ロジックなんて基本的に手続きの塊だろ。
わざわざ関数型言語で書く理由が見つからない。
0018デフォルトの名無しさん2009/11/09(月) 01:15:12
自己増殖電卓
0019デフォルトの名無しさん2009/11/09(月) 12:53:17
>>17
他の関数型言語の事は知らないけど、
Haskell なら利点のいくつか(遅延評価や型推論など)を享受しながら、
対話ロジックを綺麗に作る術(副作用部分の分離)が用意されている。

Haskell でプログラムしている時、
対話ロジックの部分だけ他の言語を使うなんて事はしない。
Haskell だけで全部作った方が綺麗にまとまる。
わざわざ手続き型の言語を使う理由が見つからない。
0020デフォルトの名無しさん2009/11/09(月) 13:56:33
結局は、一行一行処理していく方式と、そうでない方式
どちらが人間から見て簡単に動作するものを作れるかということなんだろうな。

システムってのは外界に影響を与えるもの、つまり、画面に表示したり、HDDに書き込んだり、
という副作用が目的なので、副作用を記述しやすい言語のほうが
簡単に目的を達成できる。

アセンブラでも物は作れるが作りにくいのと同様
数学的な問題(副作用が要らない)なら関数型言語でも作りやすいが
副作用を多用する場合は、作りにくい。

普通のプログラマが難しく感じるのは、副作用があるものを作る脳になっているからなのだろう。
仕事の内容が違う。
0021デフォルトの名無しさん2009/11/09(月) 14:02:50
純粋関数型言語なら無理
0022デフォルトの名無しさん2009/11/09(月) 17:36:13
純粋なのは言語であって実装でないから可能
0023デフォルトの名無しさん2009/11/09(月) 18:44:04
>>20
> 副作用を記述しやすい言語のほうが簡単に目的を達成できる。

一般的にそう思われていることは分かっているが、
もしかしたら誤解されているかもしれないので言っておくと、
Haskell は副作用があるものを記述する事も「簡単」だぞ。
頑張ればできるとか、難しくはないというレベルじゃなくて、
普通に書ける(多用したって変わらん)。

また、一行一行処理していく方式の方がシステムに向いているとは
一概には言えないのではないか?
たとえば、Haskell は宣言的に記述する作法だが、
画面に表示したり、HDDに書き込んだりというのを
宣言的に記述した方が分かりやすい場合も多々あると思うが。

誤解ではなく分かって言っているのならすまん。
それなら単に感じ方の個人差か、一般大衆を代表して言っているのであろうから
何も言うことはない。
0024デフォルトの名無しさん2010/06/21(月) 22:02:44
実際に関数型言語電卓やメモ帳のソースを見ないと判別つかんな。
0025デフォルトの名無しさん2010/07/27(火) 00:48:24
関数型でのUIプログラムってのはイベントからの状態変更までを関数型プログラムでつなぐもの、それの組み合わせかと思ってるんだがそんなもので良い?(´・ω・`)
0026デフォルトの名無しさん2010/07/27(火) 03:04:19
いいえ
0027デフォルトの名無しさん2010/07/27(火) 08:11:01
じゃぁどんなのよ
0028デフォルトの名無しさん2011/02/16(水) 16:37:24
EmacsはLispで書かれているのか?
つまりそういうことだ。
0029デフォルトの名無しさん2011/02/16(水) 23:42:01
Emacs はほぼ Lisp で書かれているよ。
つまりどういうことだ?
0030デフォルトの名無しさん2011/02/25(金) 08:29:29.51
ねんがんの Lisp Machine を てにいれたぞ
0031デフォルトの名無しさん2011/02/26(土) 08:39:45.18
ちょっとWindowsを関数型で書いてみて
0032デフォルトの名無しさん2011/02/26(土) 09:33:50.60
それはちょっとで書けるものじゃないです
0033デフォルトの名無しさん2011/02/26(土) 13:32:32.30
関数型で OS を書くという真面目なプロジェクトもあった
まだ続いているのか頓挫したのか、研究レベルで終わったのか知らんが
0034デフォルトの名無しさん2011/02/26(土) 19:39:59.03
>>33
kwsk
ICOT?
0035デフォルトの名無しさん2011/02/26(土) 19:49:03.60
House とか
http://programatica.cs.pdx.edu/House/
0036デフォルトの名無しさん2011/05/03(火) 05:13:59.31
>35 >8
>33 >8 ?
8が大人気 (2ヶ月ぶり)
0037デフォルトの名無しさん2011/05/03(火) 05:23:41.84
OSなら、 >8 なのか。

xmonad | the tiling window manager that rocks
http://xmonad.org/

論文用で、メンテナンスされてなさそう・・・とおもったらまだやってた。
NixOS: A Purely Functional Linux Distribution
http://nixos.org/
Amthing is a multi-threaded GUI library for Objective Caml.
http://forge.ocamlcore.org/projects/amthing/

Pure functional じゃないのも混じってるような気がする。
0038デフォルトの名無しさん2011/05/04(水) 12:17:06.06
おい、1年半立つのに電卓の一つもできねーのかよ
0039デフォルトの名無しさん2011/05/06(金) 02:58:15.73
clojureならJAVAの機能が使えるから作れる
0040デフォルトの名無しさん2011/05/06(金) 07:14:42.25
そういうレベルの話なら、Haskell も gtk や wxWidgets が使えるから作れる

ただ、関数型らしく宣言的に記述しようとすると、今はまだちょっと難しいな
どうしても手続き型っぽくなって汚くなる
0041uy2011/05/15(日) 21:47:36.75
関数型言語っていうものが、しょぼいんだよ
チューリング完全こそ、整ってるもののしょぼい
>>2とかかいていけやしない
方法はあると思うけど、それは手続き型でかくよりもさらに難易度は高くなる
本当に読みやすいの?それ
0042デフォルトの名無しさん2011/05/15(日) 22:02:15.70
[読む=全貌を把握する] と考えると

ちゃんと宣言的に書かれており、かつ関数型言語に慣れていれば読みやすい

でなければ読めない
0043天使 ◆uL5esZLBSE 2011/07/06(水) 09:44:51.17
---------------
((((((( [読む=全貌を把握する] と考えると )))))))(キリッッッ!
---------(キリッ!!キリッキリッッ!
---------
((((((((( ちゃんと宣言的に書かれており、かつ関数型言語に慣れていれば読みやすい )))))))))(キリッッ
---------
((((( でなければ読めない )))))(←キリッッッッキリッッッッ!!!キリッッッッ!!!!キリッ!!
0044大天使 ◆uL5esZLBSE 2011/07/06(水) 11:18:42.59
>>42
そうじゃなくて、関数型でかくと「冗長」するって話だ それさえも分からない ゴミか お前はゴミだな
OSかいたことないだろお前
知ったかは死ね

かけない事はなくても、手続き型でかいたほうがソースコード量が小さくメンテもしやすい類のアルゴリズムは
手続き型でかいたほうが賢い、 よって関数型しかかけない言語なんてのは玩具なんだよ
OO言語で、関数型Progするのが現代において最も、良い方法
0045天使 ◆uL5esZLBSE 2011/07/06(水) 11:54:11.38
--------------
(((((((((((( そういうレベルの話なら、Haskell も gtk や wxWidgets が使えるから作れる ))))))))))))(キリッッッッ!!キリッッッッ!!!!ッッッ!!!
----
(((((((((((( ただ、関数型らしく宣言的に記述しようとすると、今はまだちょっと難しいな ))))))))))))(キリ!!!!キリッッ!!!!キリ!!!キリッッ!!!!キリッ!!!!ッ!!
----------------(きリッッッ!!キリ!!!きリッ!
----------------
((((((((((( どうしても手続き型っぽくなって汚くなる )))))))))))(キリッッッ!!!!きリッ!!!キリッッッ!!キリ!!!キリッッッッ!!!
ゴミグラマってバカだったんだな
0046デフォルトの名無しさん2011/09/23(金) 21:52:14.31
>>38
プログラミングHaskellに電卓の例が載ってるよ
ライフゲームの例も
0047デフォルトの名無しさん2011/09/27(火) 22:36:29.77
lispでqt使えるじゃん。だれか作れよ。
0048デフォルトの名無しさん2012/01/27(金) 06:03:21.36
さすがにそれぐらいつくれるよ
0049デフォルトの名無しさん2012/01/27(金) 06:11:08.25
OSも作れないような言語なんて言語として認められないよな
0050デフォルトの名無しさん2012/01/27(金) 06:55:05.20
でも圧倒的に関数型言語で作りやすい分野があるなら
やる気ある奴ならその部分だけでも関数型言語で
作るべきじゃないのか
0051デフォルトの名無しさん2012/01/27(金) 16:01:42.62
作ればあるよ、馬鹿野郎。
0052デフォルトの名無しさん2012/03/26(月) 11:28:19.16
メモ帳作るならVB最強や!
0053デフォルトの名無しさん2012/03/26(月) 12:13:59.66
馬鹿には無理
0054デフォルトの名無しさん2012/03/26(月) 12:45:51.50
俺の中でメモ帳と言ったら Emacs と vi しかない

それ以外はみなメモ帳ではなく、メモができそうな何かだ
0055営利利用に関するLR審議中@詳細は自治スレへ2012/04/07(土) 03:32:43.03
Emacsとviをメモにしか使ってないのか…
かわいそうに
0056営利利用に関するLR審議中@詳細は自治スレへ2012/04/07(土) 06:47:48.12
>>54
むしろそれをメモ帳と言っちゃ失礼だw
0057営利利用に関するLR審議中@詳細は自治スレへ2012/04/07(土) 08:08:56.87
A ⊂ B の話しかしていないのに
勝手に A ⊃ B 前提の話をし始める >>55 みたいな香具師って
きっと馬鹿なんだろうな
文系板とかマ板ならそういうのをよく見かけるが
ム板で見かけるとは思わなかった
0058542012/04/07(土) 13:36:24.91
>>57
勝手に話を発展させるのは、俺はべつに構わんが
いちいち断られると、むしろうざい

>>55
逆に訊くが、メモ以外に何に使うんだ?

プログラミングは VisualStudio や Eclips が総合的に最も使いやすいし、
文章を紡ぐなら一太郎がいい、ワードをプロセッシングするなら Word がある
DTP なら QuarkXPress や InDesign だろ

Emacs や vi がメモ以外に最も適している分野に出会ったことがない
マクロ次第で色々な環境が作れるが、使いやすさの点でどれも中途半端だ

GUI がない Linux サーバーの設定などで、
やむを得ず Emacs や vi を使う事は良くあるが、適しているとは思えんな
その場合ならもっとセキュアで分かりやすい方法があるかもしれんのに、
それを研究せず右に倣えになっているような気がしないでもない

パソコン上でのメモなら、Emacs や vi が最強だ
特に Emacs は抜群に高いカスタマイズ性で非常に使いやすい
立ち上がりも工夫すれば早くなるし
0059営利利用に関するLR審議中@詳細は自治スレへ2012/04/07(土) 17:20:50.96
>>58
emacsの利点は最強である事じゃなく、emacsという環境で開発もメールもコマンドの実行も完結出来るという点

一つ一つは最強の機能じゃなくても、使うのに不都合じゃ無ければ、単体機能が最強のツールをバラバラに使うよりも使い勝手が良い

0060542012/04/07(土) 18:50:31.98
なるほどね、そういうのを好む人に対する反論は無いな

俺は余程じゃないと最強とまでは求めないけど、
少なくとも「emacs でもできる」というのでは使いにくいと感じるタイプだ
0061デフォルトの名無しさん2012/05/07(月) 01:00:20.50
vim派だからEmacsで何でも出来るという理屈は気に入らない
■ このスレッドは過去ログ倉庫に格納されています