関数型言語ML (SML, OCaml, etc.), Part 6
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2009/06/15(月) 07:15:21
関数型言語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/
0002デフォルトの名無しさん
垢版 |
2009/06/15(月) 19:45:36
プログラミングの初心者が最初に学習する言語としても優れているのに、
学習者が増えないのはなぜなの?
0005デフォルトの名無しさん
垢版 |
2009/06/16(火) 01:24:50
前スレでもあったけどOcamlとHaskellってどっちが初心者に向いてるのかな?
Lispいじってた俺にとってはOcamlの方が見た感じ楽そうに見えるけど
Lisp、Ocaml、Haskellマスターの意見が聞いてみたいな
0007デフォルトの名無しさん
垢版 |
2009/06/16(火) 22:59:25
>>5
型つき関数型言語の背景にある背景理論(ラムダ計算)をぱっと勉強したいならHaskell,
実用で長いこと使いたいならOCaml。
0008デフォルトの名無しさん
垢版 |
2009/06/16(火) 23:52:08
オブジェクトを使わずにステートマシンを作るのによい方法はありますか?

勉強のためにStateパターンをモジュールを使ってやってみようと思ったのですが、
相互依存を回避するうまい方法が思いつきません。
また、状態をそれぞれ別モジュールにするにせよ、一箇所にまとめるにせよ、動的に切り替えるためには
結局パターンマッチさせてそれらを呼び出すようになると思いますが、もっとスマートな方法はありますか?
00128
垢版 |
2009/06/17(水) 12:36:14
実際の問題を簡単にした問題例です。

流れ:
キャラクタがバイトをして財布がいっぱいになったら銀行へ行く
ということを目標金額まで繰り返し、到達したらその金がなくなるまで
家でごろ寝し、なくなったらまた働く

キャラクタは
  ・バイトをする : 手持ちが1増える
  ・銀行で貯金をする : 手持ちを0にし、貯金が1増える
  ・家で寝る : 貯金が1減る
の状態を取ります。
財布の許容量は3、目標貯金額は5とします。

Ocaml的な解決方法のアドバイスをいただけると幸いです。

ちなみに元々の問題は「実例で学ぶゲームAIプログラミング」
という本の2章に出てくる、上記の問題例にいくつか余分な状態を
追加したようなものです。
元々の問題をとりあえず実装してみたソースとサンプルソースも
あげてみました。
http://www1.axfc.net/uploader/Sc/so/9827.lzh
00138
垢版 |
2009/06/17(水) 12:42:44
スレ違いではありますが、もう1つ後学のために質問をさせてください。
アップロードするのは初めてでよくわからないままaxfcを
使用したのですが、プログラム板で一般的に使用されている
アップローダーというものはあるのでしょうか?
0014デフォルトの名無しさん
垢版 |
2009/06/17(水) 14:43:02
>12
その手の奴って素直に状態保持した方が色々スッキリしそうなんだけどどうなのエロイ人
0015デフォルトの名無しさん
垢版 |
2009/06/17(水) 16:54:33
>>12
> キャラクタは
>   ・バイトをする : 手持ちが1増える
>   ・銀行で貯金をする : 手持ちを0にし、貯金が1増える
>   ・家で寝る : 貯金が1減る
> の状態を取ります。

ニート解:

キャラクタはバイトせず取り敢えず銀行へ行く
ということを目標金額まで繰り返し、到達したらその金がなくなるまで
家でごろ寝し、なくなったらまた働かずにまた銀行へ行く
0018デフォルトの名無しさん
垢版 |
2009/06/17(水) 22:22:20
なんで12の問題にStateパターンが適してるのかよくわからない。。
0019デフォルトの名無しさん
垢版 |
2009/06/17(水) 22:31:48
interface State { void whatToDoNext(); } みたいなインターフェイスがあって、
class RichState implements State { public void whatToDoNext() { goToTheBank(); }
class PoorState implements State { public void whatToDoNext() { work(); }
...
みたいなイメージですか?
0021デフォルトの名無しさん
垢版 |
2009/06/17(水) 23:07:47
>>20のやり方がいいんじゃねーかな
たぶん>>16も同じこと?

たぶん両者が言ってるのはこんな感じ?(1/2)
type action =
| Work // バイトをする
| Deposite // 銀行で貯金をする
| Rest;; // 家で寝る

type life_state =
| Working // …ということを目標金額まで繰り返し
| Resting;; // ごろ寝

let sigma event state =
match (event, state) with
// バイトをする: 手持ちが1増える
| (Work, (budget, account)) -> (budget + 1, account)
// 銀行で貯金をする: 手持ちを0にし、貯金が1増える
| (Deposite, (budget, account)) -> (0, account + 1)
// 家で寝る: 貯金が1減る
| (Rest, (budget, account)) -> (budget, account - 1);;
0022デフォルトの名無しさん
垢版 |
2009/06/17(水) 23:09:23
(2/2)
let rec life state days =
printfn "%A" (state, days);
if days = 0
then ()
else
match state with
// 財布がいっぱいになったら銀行へ行く
| (Working, (3, account)) -> life (Working, sigma Deposite (3, account)) (days - 1)
// ということを目標金額まで繰り返し
| (Working, (budget, 5)) -> life (Resting, sigma Rest (budget, 5)) (days - 1)
// (財布がいっぱいになるまでは働く)
| (Working, s) -> life (Working, sigma Work s) (days - 1)
// 到達したらその金がなくなるまで家でごろ寝し、なくなったらまた働く
| (Resting, (budget, 0)) -> life (Working, sigma Work (budget, 0)) (days - 1)
// (なくなるまではごろ寝する)
| (Resting, s) -> life (Resting, sigma Rest s) (days - 1);;

改行が…まぁいいか
ちなみにF#です
00238
垢版 |
2009/06/18(木) 00:21:17
>>16
継続について調べてみます。

>>17
ありがとうございます。今度コードを晒すときに使ってみます。

>>19
おそらくそのイメージで合っていると思います。
(とはいってもJavaはよくわからないのですが・・・)
トップレベルでキャラクタクラスのUpdateを呼び出すと、保持している
派生状態クラスのインターフェースに自身を渡して実行。あとはよろしく。
状態の切り替えも勝手にお願いね。
的なコードが元々のサンプルコードです。

>>21
コードを書いていただきありがとうございます。

例題を簡略化したせいで反ってわかりにくくなってしまい、すみませんでした。
とりあえず継続というものを調べつつもう少し考えて見ます。
皆様ありがとうございました。
0024デフォルトの名無しさん
垢版 |
2009/06/18(木) 22:18:10
考えてみたけどこれじゃだめ?

(* 1/2 *)
type state = { cash: int; deposit: int; action: unit -> state }

let rec work_state cash deposit = {
cash = cash;
deposit = deposit;
action = (fun () ->
print_endline "work";
let cash' = succ cash in
if cash' < 3 then work_state cash' deposit
else rich_state cash' deposit
)}
and rich_state cash deposit = {
cash = cash;
deposit = deposit;
action = (fun () ->
print_endline "go to the bank";
let deposit' = succ deposit in
if deposit' < 5 then work_state 0 deposit'
else neet_state 0 deposit'
)}
0025デフォルトの名無しさん
垢版 |
2009/06/18(木) 22:19:23
(* 2/2 *)
and neet_state cash deposit = {
cash = cash;
deposit = deposit;
action = (fun () ->
print_endline "sleep";
let deposit' = pred deposit in
if deposit' > 0 then neet_state cash deposit'
else work_state cash deposit'
)}

let initial_state = work_state 0 0
0026デフォルトの名無しさん
垢版 |
2009/06/19(金) 09:08:15
この規模だといいけど、
行動の結果と選択を独立に実装できる方が
将来の拡張にはよいんじゃないかな、
特に質問者はゲームAIの本読んでるらしいし。
0028デフォルトの名無しさん
垢版 |
2009/06/20(土) 12:20:07
OCamlで副作用のあるライブラリを使っていて、
クロージャの(環境の)合成がしたくなったのですが失敗します
再現コードを書くと
ma,mbは期待通りですがmcは毎回1が出力されます
環境の中の環境ってのは呼ばれるごとに新しい環境になるからってことですかね
let a x f=
let r = ref x in
fun ()->Printf.printf "%d" !r;f(); r:=!r+1;;
let b x f=
let r = ref x in
fun ()->Printf.printf "%d" !r;f(); r:=2* !r;;
let c x f =
fun ()->(a x (b x f))();;
let ma = a 0 (fun ()->Printf.printf "a\n" );;
let mb = b 1 (fun ()->Printf.printf "b\n");;
let mc = c 1 (fun ()->Printf.printf "c\n");;
ma();;ma();;ma();;
mb();;mb();;mb();;
mc();;mc();;mc();;
てことはOCamlのオブジェクト指向部分ちゃんと覚えないとだめかな
by poor man
0029デフォルトの名無しさん
垢版 |
2009/06/20(土) 16:54:49
let rec length list =
 match list with
  [] -> 0
 | x::rest -> 1 + length rest;;

このリストの長さを返す再帰関数の動きなんですが、下へ展開していって
ループが終了したら、上に値が戻ってくるイメージでOKですか?

length [2; 1; 3] = match [2; 1; 3] with
  | 2 :: [1; 3] -> 1 +
            length [1; 3] = match [1; 3] with
              | 1 :: [3] -> 1 +
                       length [3] = match [3] with
                        | 3 :: [] -> 1 +
                                length [] = match [] with   
                                   [] -> 0
                              1 + 0        
                     1 + 1
           1 + 2
length [2; 1; 3] = 3
0032デフォルトの名無しさん
垢版 |
2009/06/20(土) 17:16:19
インデントを浅くしろw

基本的に再帰は漸化式と同じと考えれば良い。
それで合ってるが、一々動作を深く考えずに関数を定義出来るようになるのが
最初の一歩だから精進すべし。
0033129
垢版 |
2009/06/20(土) 17:41:30
ども。インデントはあれかなぁと書いた後に思いました。

命令型言語だとカウントする変数を作ってa = a + 1みたいな
イメージが強くて直感的にこのソース見て理解出来なかったので。
書いて見ると理解出来るもんですね。精進します。
0034デフォルトの名無しさん
垢版 |
2009/06/20(土) 21:21:43
>>29
ocamlのトップレベルには#traceというディレクティブがあって、
指定した関数の動きが表示される
再帰関数の動きを確認するのにはやや便利だから使ってみて
# #trace length;;
length is now traced.
# length [1;2;3];;
length <-- [<poly>; <poly>; <poly>]
length <-- [<poly>; <poly>]
length <-- [<poly>]
length <-- []
length --> 0
length --> 1
length --> 2
length --> 3
- : int = 3
0038デフォルトの名無しさん
垢版 |
2009/06/22(月) 09:18:56
>>28
質問をまず推敲してくれ。「期待」とやらが何かわかんねー。
> てことはOCamlのオブジェクト指向部分ちゃんと覚えないとだめかな
それは違うだろ。
003938
垢版 |
2009/06/22(月) 09:32:13
>>28
let c x f = a x (b x f);;
これが28の期待に沿っているといいのだが。
0040デフォルトの名無しさん
垢版 |
2009/06/23(火) 09:00:15
ttp://flyingfrogblog.blogspot.com/2009/03/hlvm-has-been-released.html
HLVMってのはLLVMの関数型特化版、みたいなイメージ?
OCamlはこっちになるの? おしえてエロいひと
0041デフォルトの名無しさん
垢版 |
2009/06/23(火) 10:34:57
釣りなの?釣りなの?
> HLVMってのはLLVMの関数型特化版、みたいなイメージ?
そういう理解でいい。

HLVM そのものの批判は詳細を知らないのでできないけど、

- Caml team は HLVM プロジェクトには全く噛んでない。
- Caml team と consortium が関知しない code generation の総入れ替えはありえない。
- HLVM で騒いでいる奴は各種言語メーリングリストの有名粘着。何かというとすぐ自分の有料メールマガジンに誘導。
- なんかちょっとした toy example が出来るたびに大騒ぎ。正直みんな食傷している。

将来化ける事もあるかもしれない。が、今は放置をお薦め。時間の無駄。
0043デフォルトの名無しさん
垢版 |
2009/06/23(火) 16:00:15
ttp://www.infoq.com/jp/news/2008/03/revoerability-and-testing-oo-fp

ここに
「Feathers氏に反対する人の多くは、関数型のコード乱雑になる原因は、
関数型ではないイディオムを関数型言語に持ち込んだこと以外にはないと
信じている。」
っていう記述があるけど、関数型言語のイディオム(とかデザインパターン)って
どんなのがあるの?おしえてエロいひとー
0044デフォルトの名無しさん
垢版 |
2009/06/23(火) 16:23:20
>>43
原文を読んでみると、単に副作用のない純粋関数型のコードを
関数型のイディオムと呼んでいるように思えるな。
0045デフォルトの名無しさん
垢版 |
2009/06/23(火) 17:28:56
>>43
そうだとするとあまりに漠然としていて多少の窮屈感が欲しくなるな。
ノーパンでスカートを穿いているような、あるいは力戦になって次に
なにを指せばいいのかわからない、そんな感じ。
そのうちそういうのがまとめられればいいなぁ。
0047デフォルトの名無しさん
垢版 |
2009/06/23(火) 17:58:00
>>45
おっしゃる事があまりに漠然としていて多少の具体感が欲しくなるな。
ノーパンでスカートも穿いてないような、あるいは序盤なのに次に
なにを指せばいいのかわかってない、そんな感じ。
そのうちそういうのをまとめられるようになってくれ。
0048デフォルトの名無しさん
垢版 |
2009/06/23(火) 18:23:04
>>45
関数型が嫌いor慣れてない人の多くは純粋関数型の副作用の無い世界を
非常に窮屈だと感じるわけで。不感症になったのも慣れということだなw
0050デフォルトの名無しさん
垢版 |
2009/06/23(火) 21:34:35
>>41
ありがとん参考になった!

ベンチマークだけみて速いなーとか思っただけなんで、
そんな背景があったとはまったく知らんかったyo
0051デフォルトの名無しさん
垢版 |
2009/06/24(水) 09:15:16
>>50
GC なしで早いよーと叫ばれてもね。
普通にMLのプログラムがコンパイル出来るようになったら
ベンチを見てみてもいい。

0052デフォルトの名無しさん
垢版 |
2009/06/24(水) 09:18:35
>>43
デザインパターンってぶっちゃけてみれば、バッドノウハウのことでしょ。
関数型言語にそんなのないよ。
0053デフォルトの名無しさん
垢版 |
2009/06/24(水) 09:23:49
昨晩の議論の結果、「デザインパターン」はありませんが、「あるあるネタ集」ならあることになりました。
0054デフォルトの名無しさん
垢版 |
2009/06/24(水) 19:11:49
>>52
関数型言語にデザインパターンがないということはないだろう。要は「あるあるネタ集」(の粒度がある程度あるもの)のことなんだから。
オブジェクト指向でのデザインパターンは関数型言語ではバッドノウハウになり得るというのは同意。
0058デフォルトの名無しさん
垢版 |
2009/06/24(水) 21:36:15
あらゆる意味でF#>>>>Javaだろ。Windows上では。
特に関数型言語が好きだからとかではなく。客観的事実。
0059デフォルトの名無しさん
垢版 |
2009/06/24(水) 21:37:58
Javaはネイティブで動かないからうんこ。
スレッドで動いてるガベコレも時々挙動がおかしくなるからうんこ。
0060デフォルトの名無しさん
垢版 |
2009/06/24(水) 22:47:46
最終話「structをfunctorに」  すべてを終わらせる時…!
                   C・Y・C第1巻は、発売未定です。夢野カケラ
OCaml : チクショオオオオ!くらえC++!ガベージコレクション!
C++ : さあ来いOCaml!実はオレは一回不正なメモリ操作しただけで死ぬぞオオ!
(ガッ)
C++ : グアアアア!こ、この地上でもっともバカな言語と呼ばれる四天王のC++が…
  こんな不純粋関数言語に…バ…バカなアアアアアア
(ドドドドド)
C++ : グアアアア
Delphi : C++がやられたようだな…
VB : フフフ…奴は四天王の中でも最弱…
C# : MLごときに負けるとは手続き型言語の面汚しよ…
OCaml : くらええええ!
(ズサ)
3言語 : グアアアアアアア
OCaml : やった…ついに四天王を倒したぞ…これでJavaのいるWindowsのWindowが開かれる!!
Java : よく来たなObjective Caml…待っていたぞ…
(ギイイイイイイ)
OCaml : こ…ここがWindowsだったのか…!感じる…Javaの魔力を…
Java : OCamlよ…戦う前に一つ言っておくことがある。お前は私を倒すのに
  『オブジェクト指向』が必要だと思っているようだが…別になくても倒せる
OCaml : な 何だって!?
Java : そしてお前の入門書は増えてきたので最寄りの本屋へお取り寄せしておいた。
  あとは私を倒すだけだなクックック…
(ゴゴゴゴ)
OCaml : フ…上等だ…オレも一つ言っておくことがある。このオレに生き別れたF#が
  いるような気がしていたが別にそんなことはなかったぜ!
Java : そうか
OCaml : ウオオオいくぞオオオ!
Java : さあ来いOCaml!
OCamlのnative codeが世界を救うと信じて…! ご愛読ありがとうございました!
0063デフォルトの名無しさん
垢版 |
2009/06/25(木) 00:40:01
>>62
F#スレにこんなのあったよ

553 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/01(月) 22:32:37
>>552
OCamlのみ
 多相ヴァリアント、ファンクタ、注釈ありで型がつく箇所では省略しても必ず型推論できる性質
 Camlp4/5、ビルド関係のツール(F#はしょぼい)

オブジェクト指向部分は根本的に違う(nominal/structural)
0069デフォルトの名無しさん
垢版 |
2009/06/26(金) 03:32:33
List.fold_left (fun (x,_) y -> x + y) 0 [(1,1)];;
を通そうとしたところ
This expression has type int but is here used with type int * 'a
といわれてしまいます。うまい方法はないのでしょうか?
0072デフォルトの名無しさん
垢版 |
2009/06/26(金) 12:25:05
fold 辺りまで来たら、フィーリングでデバッグするんじゃなくて、
ちゃんと型を確認しだしたほうがいいね。
0073デフォルトの名無しさん
垢版 |
2009/06/28(日) 22:06:11
http://itpro.nikkeibp.co.jp/article/COLUMN/20061212/256657/?ST=develop
↑ここを読んでいて、LablGLをインストールしようとして失敗しました。
どうしたらいいか教えてください。
OSはWindowsXPです。
・lablgl-1.04-win32.zipをObjective Caml以下のディレクトリに直接展開しました。
・Microsoft Visual C++ 2008 Redistributable Package (x86).をインストールしました。
・glut-3.7.6-bin.zipをダウンロードし、glut32.dllをsystem32フォルダにコピーしました。
・コマンドプロンプトを開き、
 C:\Program Files\Objective Caml\lib\lablGLまで移動し、
 ocaml build.mlをコマンドプロンプトから実行しました。
途中までは走っていたのですが、以下のようにエラーが出ました。
C:/Tcl/lib tk84.lib tcl84.lib gdi32.lib user32.lib " togl.cmo
ocamlc.opt -w s -I +labltk -a -o lablglut.cma -cclib -llablglut -dllib -llablglu
t -cclib "glut32.lib " glut.cmo
ocamlopt.opt -w s -I +labltk -c raw.ml
'ml' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
File "raw.ml", line 1, characters 0-1:
Error: Assembler error, input left in file C:\DOCUME~1\****<※ユーザ名>\LOCALS~1\Temp\camla
smd25ac5.asm
Native build failed: error 2
You can still use the bytecode version
Now ready to use on an OCaml MSVC port
※ここまで

またコマンドプロンプトから > lablglut を実行した際にもエラーが出ました。
Cannot load required shared library dlllablgl.
Reason: C:\Program Files\Objective Caml\lib\stublibs\dlllablgl.dll: このアプリケ
ーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケ
ーションを再度インストールすることにより問題が解決する場合があります。
※ここまで
0074デフォルトの名無しさん
垢版 |
2009/06/28(日) 22:25:15
原因はわからんが、参考までに
 labltkはインストールしてるか
 ocamlはネイティブコンパイラまでインストール済か
 Activetclはバージョン8.5系だと動かなかったので8.4を入れる

 build.mlを実行した際に
 cygwinのlink.exeが使われるとエラーになるので
 環境変数からcygwinのパスをはずす

glutはそれと同じバージョンで動いたよ
0075デフォルトの名無しさん
垢版 |
2009/06/29(月) 03:11:27
>>74
レスありがとうございます。
ですがどうも上手く行かないので、悩んでいます。
どこかで薦められてOCamlは
"Self installer (3.11.0) for the port based on the MinGW toolchain"
が入ってますが、Cygwin入れてないんです。これが原因なのかなぁ。
Cygwin以前入れたのですが今は外してしまってます。
近いうちに再度Cygwinをインストールしてみることにします。

読み進めたいので、このまま>>73の第五回は一応読むだけ読んで、
次に行きたいと思います。
0076デフォルトの名無しさん
垢版 |
2009/06/29(月) 13:21:20
ocaml用のサウンドライブラリ(スピーカーから音を出したりマイクの音を拾ったり)で一番ポピュラーなのって何かな?
0078デフォルトの名無しさん
垢版 |
2009/06/29(月) 13:40:59
>>77
だって、作るとしたらWin32APIとかOSSとかALSAとかいろいろサポートして、なおかつメンテもしないといけないんでしょう?
嫌ですよ。
0079デフォルトの名無しさん
垢版 |
2009/06/29(月) 16:08:25
>>78
うわなんかヘタレられた。
自分のやりたいAPIのインターフェースだけ作りゃいいじゃん。
メンテもしたけりゃするだけでいいじゃん。
初期化とかは何かのライブラリ関数呼ぶだけだし。
やりたいことはほとんどデバイスから
ノンブロッキングに読んだり書いたりするだけで大抵出来るっしょ。
0080デフォルトの名無しさん
垢版 |
2009/06/29(月) 17:35:00
>>79
そんな俺しか使わないライブラリを公開するぐらいなら、公開せずに手元に持っておいて、作り溜めしときますよ。
0082デフォルトの名無しさん
垢版 |
2009/06/29(月) 21:04:21
>>81
ありがとうございます。1.03にしたら "OCaml build.ml"は上手く行ったようです。


しかし
「ocamlrun.exe - コンポーネントが見つかりません
 ocamlrun.dll が見つからなかったため、このアプリケーションを開始できませんでした。」
となってしまいまたもや失敗。

>>73のリンク先を見るとLablGLのインストールが失敗してるというのですが
インストールしなおしても同じエラーメッセージが出ます。はてさて。

OCaml本体は"ocaml-3.11.0-win-msvc.exe"をインストールしなおしました。
0083デフォルトの名無しさん
垢版 |
2009/06/29(月) 22:06:31
Windowsだとライブラリのビルドでつまづくことが多いよね。
OcamlSDL関連のビルドで上手くいなかくてビルドを諦めた。
OCaml自体はプログラミング入門者にも比較的優しいと
思うけど環境は若干敷居が高めだと思う。
んでWindows使うのが悪いとかいわれちゃうとしょんぼりする。
そもそもLinux系を使うこと自体、本職でない人にとっては
普通ではないわけで。
0084デフォルトの名無しさん
垢版 |
2009/06/29(月) 22:14:49
あれぇ?書き込めた。どうせアク禁の巻き添えで書き込めないだろうと
勉強不足を棚に上げた愚痴>>83を書いてみたら・・・。
ごめんなさい。反省しています。
0090デフォルトの名無しさん
垢版 |
2009/06/29(月) 23:16:11
>>82
(いまさらだが)OCamlのReadmeを見ると MinGWの場合は

Do *not* install the Mingw/MSYS development tools from www.mingw.org:
these are not compatible with this Caml port (@responsefile not
recognized on the command line).

って書いてあるからCygwinが必要なんだと思われる。
英語は雰囲気で読んでいるので間違っていたら誰かやさしく叱ってくれ。
0091デフォルトの名無しさん
垢版 |
2009/06/29(月) 23:40:30
>>84
> あれぇ?書き込めた。どうせアク禁の巻き添えで書き込めないだろうと
> 勉強不足を棚に上げた愚痴>>83を書いてみたら・・・。

この精神でビルドがんばれ。
どうせビルドできないと思ってもできるかも。
0095デフォルトの名無しさん
垢版 |
2009/06/30(火) 12:32:44
スレとは関係ないが、東北型言語を使用する俺は「だっけ?」が方言かどうかわからなくなるときがある。
009982
垢版 |
2009/06/30(火) 17:56:45
そういうもんなんだとあきらめる事にしましたw
結局Cygwinなんか入れるよりもお勉強用のLinuxマシンを用意した方が早そうですね。
レス頂いてありがとうございます。
010182
垢版 |
2009/06/30(火) 18:57:35
セレロン1G、メモリ256Mしかないノートなんです。仮想環境は無理では。
Knopixとかならできるのかな?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況