[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 13:54 / Filesize : 121 KB / Number-of Response : 478
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

【.NET】F#について語れ【OCAML】



1 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 14:03:05 ]
MSResearchから出てきた.NETで使える関数型言語のひとつF#
OCAMLの流れを汲むこの言語、いろいろと面白そうなことができそう。
まだまだ英語の情報しかないこの言語について、幅広く語れ。

research.microsoft.com/fsharp/fsharp.aspx

207 名前:名無しさん♯ mailto:sage [2007/12/03(月) 23:35:51 ]
Cycleは漏れ的にはお気に入りだけど、実際には使わんよなあ・・・。(;´Д`)

208 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 00:29:38 ]
OCamlは糞言語だな。F#は大丈夫なんだろうな。

209 名前:名無しさん♯ mailto:sage [2007/12/04(火) 20:11:20 ]
TPLは、TaskManagerPolicyを変えて、ParallelよりもConcurrentライブラリとして使えば便利かもしれん。
でもそれって何てjava.util.concurrent?(´・ω・`)

210 名前:デフォルトの名無しさん [2007/12/20(木) 02:46:46 ]
Lisp系に比べるとML系って泥臭いというか、洗練されていない感じがする。頭悪そうな感じ。

211 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 08:06:21 ]
でも得てしてそういう言語の方が広まったりしない?

212 名前:デフォルトの名無しさん [2007/12/21(金) 08:42:24 ]
MLは普及してないだろ。

213 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:10:28 ]
まさに目くそ鼻くそ

214 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:41:19 ]
MS は # シリーズが Z までいったら,
次は $ シリーズを展開してくれると期待している.

215 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:44:56 ]
M$



216 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:59:49 ]
>>210
CL, Scheme, SML, OCaml なんかを比べているのであれば、
どれも大差無い様に見えるけど。歴史的に一番泥臭いのは
CL だろうけど…

217 名前:名無しさん♯ mailto:sage [2007/12/24(月) 10:52:24 ]
Scalaの言語仕様もよくできてますなあ。
F#よりもHaskellに近い希ガス。
もしかしたら、C# 4.0のヒントもこの中にあるのかもしれん。(´・ω・`)

218 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:24:46 ]
気になる開発プロダクツ
第7回 Scala 2.6.0-final
gihyo.jp/dev/serial/01/awdp/0007

初めて名前聞いた.

ところでみんな将来的には業務に使おうと思ってF#とか
関数型言語をいじってるの?

219 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 03:54:29 ]
Scala、Rubyみたいな言語だなw

220 名前:名無しさん♯ mailto:sage [2007/12/26(水) 11:42:54 ]
一部で話題になってる論文。
ttp://www.cs.kuleuven.be/~adriaan/?q=genericshk

これをJVM上の言語で実現したのはすごいなあ。

一方、.NETの方では・・・。(´・ω・`)
ttp://www.haskell.org/pipermail/glasgow-haskell-users/2005-January/007603.html

221 名前:名無しさん♯ mailto:sage [2007/12/26(水) 21:40:07 ]
いちおう動いたけど、なんか間違えてるような・・・(´・ω・`)?

trait Monad[M[_]] {
 def returnM[T](x: T): M[T]
 def bindM[T, U](m: M[T], f: T => M[U]): M[U]
}

abstract class Maybe[T]
case class Just[T](x: T) extends Maybe[T]
case class None[T] extends Maybe[T]

object Test {
 implicit object MaybeMonad extends Monad[Maybe] {
  def returnM[T](x: T) = Just(x)
  def bindM[T, U](m: Maybe[T], f: T => Maybe[U]): Maybe[U] = m match {
   case Just(x) => f(x)
   case _ => None()
  }
 }
 def test[T, U](a: Maybe[T], f: T => U)(implicit m: Monad[Maybe]) {
  m.bindM(a, (b: T) => m.returnM(f(b))) match {
   case Just(x) => println(x)
   case _ => println("None")
  }
 }
 def main(args: Array[String]) {
  test(Just(100), (x: Int) => x + x) // 200
  test(None(), (x: Int) => x + x) // None
 }
}

testの第1引数にMaybeを使ってしまうと、Monadで汎化した意味がないような・・・。

222 名前:名無しさん♯ mailto:sage [2007/12/26(水) 21:52:51 ]
しかも、JustとNone。名前の由来が微妙に混ざってる・・・。orz

223 名前:名無しさん♯ mailto:sage [2007/12/26(水) 22:23:36 ]
あ、こうすればいいのか。(゚∀゚)

 def test[M[_], T, U](a: M[T], f: T => U)(implicit m: Monad[M]) {
  m.bindM(a, (b: T) => m.returnM(f(b)))
 }

224 名前:名無しさん♯ mailto:sage [2007/12/26(水) 22:50:55 ]
関数を { 〜 } で囲むと戻り値はUnitになっちゃうのか・・・。なるほど。(;`・ω・)

225 名前:名無しさん♯ mailto:sage [2007/12/26(水) 23:11:49 ]
修正版でつ。

trait Monad[M[_]] {
 def returnM[T](x: T): M[T]
 def bindM[T, U](m: M[T], f: T => M[U]): M[U]
}

abstract class Maybe[T]
case class Just[T](x: T) extends Maybe[T]
case class Nothing[T] extends Maybe[T]

object Test {
 implicit object MaybeMonad extends Monad[Maybe] {
  def returnM[T](x: T) = Just(x)
  def bindM[T, U](m: Maybe[T], f: T => Maybe[U]) = m match {
   case Just(x) => f(x)
   case _ => Nothing[U]()
  }
 }

 def test[M[_], T, U](x: M[T], f: T => U)(implicit m: Monad[M]) =
  m.bindM(x, (y: T) => m.returnM(f(y)))

 def main(args: Array[String]) {
  def p[T](m: Maybe[T]) = m match {
   case Just(x) => println(x)
   case _ => println("Nothing")
  }
  p(test[Maybe,Int,Int](Just(100), (x: Int) => x + x))
  p(test[Maybe,Int,Int](Nothing(), (x: Int) => x + x))
 }
}



226 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 14:09:13 ]
前、海外でF#使える人の求人あったけどどんなものなのかね?
日本でもかまわんけれど、実際のシステムで使われてるかなど教えてエロイ人

227 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:46:20 ]
>>226
実際は雑用とかだろ

228 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:59:22 ]
このスレ一人しかいないのか知らんけど、過疎ってるからってさすがにつっこむべきかと・・・・
そのコードF#ですか?

>>226
基本的には.netアプリだけど、ASP.NETでスクリプト的に使うんだろうな〜
まあIronPythonもそうだがちゃんとしたフォームデザイナがないとGUIアプリは作りづらいし
当然C#とかVBを置き換わるものではない
ってか常識で考えろ

229 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 23:12:31 ]
>>228
常識が何をさしてるのか知らんが、別に既存の業務土方アプリ作るのにF#使うことは無いでしょう。
まぁF#のほうが生産性高いとは思うけれど、メンテや技術者の人数から見ても選択されることはないかと。
それよりも自分が見たのは、何かの科学計算に向けての実験的なアプリの作成などに絡む部門だったような。Lispとかの経験でも可とかいってたから何か面白そうなにおいがした。

230 名前:名無しさん♯ mailto:sage [2008/01/04(金) 22:35:35 ]
Scalaをいろいろと触ってみましたけど、オブジェクトの発想が強すぎて
関数型としては扱いづらいですね・・・。(´・ω・`)

F#の比較対象としては不向きかも。

231 名前:名無しさん♯ mailto:sage [2008/01/06(日) 21:44:12 ]
fsi --quiet --exec hoge.fs

hoge.fsを実行してそのまま終了。
今までこのオプションを知らんかった・・・。orz

そうなると、DLRの使い道が一気に減ってしまうがな。(´・ω・`)

232 名前:デフォルトの名無しさん [2008/01/19(土) 17:56:27 ]
F# 1.9.3.14あげ

233 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 08:32:45 ]
ttp://www.iunknown.com/2008/02/langnet-wrap-up.html

IronRubyの中の人による、Lang.NETのまとめ

へじたんのお言葉
I think that the taxonomies of programming languages are breaking down. I think that languages are fast becoming amalgam. ... I think that in 10 years, there won't be any way to categorize languages as dynamic, static, procedural, object, and so on.

だそうで。

F#の学習はいい先行投資かもしれないねぇ。まぁ楽しいからやってるんですし、皆さんそうなんでしょうけど。


234 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:18:28 ]
どうせ次のC#までまた2年ぐらいあるんだろうしなぁ・・・
F#製品に使うことにするノシ

235 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:13:36 ]
OCamlとか知らんでいきなり#lightでやるの危険だな
letに宣言と式があるなんて知らんかったし、do,doneとかもかなり混乱する
Web上だとそういう初歩の情報ないし。
OCaml入門は読むべしだ。互換性とか適当だけど。
Expert F#は割とわかりやすかった



236 名前:デフォルトの名無しさん mailto:age [2008/02/08(金) 00:45:43 ]
ひゃー

237 名前:デフォルトの名無しさん [2008/02/08(金) 00:49:55 ]
F#の日本語本うp

238 名前:名無しさん♯ mailto:sage [2008/02/24(日) 01:19:50 ]
F#でMapReduceもどきを作ってみますた。(「もどき」なのは、sequentialにしか動かないから。w)
C# LINQに比べると、やっぱり圧倒的に記述しやすいわ。

#light

open System
open Seq

let ap_snd f (a, b) = (a, f b)

// MapReduce

let map_reduce m r =
 map_concat m
 >> groupBy fst
 >> orderBy fst
 >> map (ap_snd (map snd) >> r)

239 名前:名無しさん♯ mailto:sage [2008/02/24(日) 01:20:36 ]

// word count demo

let mapper (_, v : string) =
 v.Split [| ' '; ','; '.'; '!' |]
 |> filter (not << String.IsNullOrEmpty)
 |> map (fun s -> (s.ToLower(), 1))

let reducer = ap_snd (fold1 (+))

let data =
 [ "This is a pen.";
  "Hello, World!";
  "All your base are belong to us.";
  "My name is nanashi." ]

let _ =
 mapi (fun i s -> (i, s)) data
 |> map_reduce mapper reducer
 |> iter (fun (k, v) -> Console.WriteLine("{0}\t{1}", k, v))

240 名前:名無しさん♯ mailto:sage [2008/02/24(日) 12:44:20 ]
C#版も置いておきまつ。クエリーの部分だけはきれいなんですが・・・。(´・ω・`)

using System;
using System.Collections.Generic;
using System.Linq;

// MapReduce

public interface IMapper<K1, V1, K2, V2> {

  IEnumerable<KeyValuePair<K2, V2>> Map(KeyValuePair<K1, V1> p);
}

public interface IReducer<K2, V2, K3, V3> {

  KeyValuePair<K3, V3> Reduce(KeyValuePair<K2, IEnumerable<V2>> p);
}

public class MapReduceJob<K1, V1, K2, V2, K3, V3> {

  Func<KeyValuePair<K1, V1>, IEnumerable<KeyValuePair<K2, V2>>> mapper;
  Func<KeyValuePair<K2, IEnumerable<V2>>, KeyValuePair<K3, V3>> reducer;

  public MapReduceJob(IMapper<K1, V1, K2, V2> mapper, IReducer<K2, V2, K3, V3> reducer) {
    this.mapper = mapper.Map;
    this.reducer = reducer.Reduce;
  }

241 名前:名無しさん♯ mailto:sage [2008/02/24(日) 12:55:01 ]
あれ?数分間書き込めなかった・・・。(´・ω・`)

  public IEnumerable<KeyValuePair<K3, V3>> Execute(IEnumerable<KeyValuePair<K1, V1>> data) {
    return from d in data
        from p in mapper(d)
        group p.Value by p.Key into g
        orderby g.Key
        select reducer(new KeyValuePair<K2, IEnumerable<V2>>(g.Key, g));
  }
}

// word count

class WCMapper : IMapper<int, string, string, int> {

  public IEnumerable<KeyValuePair<string, int>> Map(KeyValuePair<int, string> p) {
    return from s in p.Value.Split(' ', ',', '.', '!')
        where !String.IsNullOrEmpty(s)
        select new KeyValuePair<string, int>(s.ToLower(), 1);
  }
}

class WCReducer : IReducer<string, int, string, int> {

  public KeyValuePair<string, int> Reduce(KeyValuePair<string, IEnumerable<int>> p) {
    return new KeyValuePair<string, int>(p.Key, p.Value.Sum());
  }
}

242 名前:名無しさん♯ mailto:sage [2008/02/24(日) 12:55:35 ]

static class Test {

  static string[] data = {
    "This is a pen.",
    "Hello, World!",
    "All your base are belong to us.",
    "My name is nanashi."
  };

  static void Main() {
    var d = data.Select((s, i) => new KeyValuePair<int, string>(i, s));

    var job = new MapReduceJob<int, string, string, int, string, int>(new WCMapper(), new WCReducer());

    foreach (var p in job.Execute(d)) {
      Console.WriteLine("{0}\t{1}", p.Key, p.Value);
    }
  }
}

243 名前:名無しさん♯ mailto:sage [2008/02/24(日) 13:37:52 ]
Map/Reduce = Select/Aggregate だと今まで勘違いしてたけど、

 Map -> SelectじゃなくてSelectMany(generator的な操作)
 Reduce -> 確かにAggregateの操作だけど、厳密にはSelectの中で(selectorとして)実行されるAggregate

だったのね。実際に書いてみないとなかなか気づけんわ。(´・ω・`)

244 名前:名無しさん♯ mailto:sage [2008/02/24(日) 13:48:26 ]
ついでにネタ振り。

末尾再帰のスタイルはどちらがお好み?

#light

// val sum : int list -> int

let sum1 l =
 let rec sum' l v =
  match l with
  | [] -> v
  | h::t -> sum' t (v + h)
 sum' l 0

let sum2 =
 let rec sum' v = function
  | [] -> v
  | h::t -> sum' (v + h) t
 sum' 0

要は、sum' の引数の順番の問題なのですが・・・。

245 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:32:14 ]
僕は末尾再帰用の追加の引数は最後に置くなぁ
もともと引数は「入力、出力」の順で書いてたので。
末尾再帰は局所定義にすることがほとんどで
部分適用をしないから、それでもいいかなと。



246 名前:名無しさん♯ mailto:sage [2008/02/24(日) 16:11:10 ]
おお、即日レスがつくとは・・・。(つД`)

>>245
> もともと引数は「入力、出力」の順で書いてたので。

確かにそうですね・・・。

sum2の方は一見ムダがないですけど、意味的にはちょっと無理やりなのかもしれませんね・・・。(´・ω・`)

247 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:26:50 ]
F#がNTPに対応すれば問題なし。

248 名前:名無しさん♯ mailto:sage [2008/02/25(月) 14:49:13 ]
Haskellにも移植してみますた。

import Data.Char
import Data.List hiding (groupBy)

-- MapReduce

mapReduce :: (Ord k) => (a -> [(k, v)]) -> ((k, [v]) -> b) -> [a] -> [b]
mapReduce m r = map r . orderBy fst . groupBy fst snd . concatMap m

-- word count

mapper :: (Int, String) -> [(String, Int)]
mapper (_, v) = map (\s -> (map toLower s, 1)) . filter (not . null) $ split " ,.!?" v

reducer :: (String, [Int]) -> (String, Int)
reducer (k, v) = (k, sum v)

-- test

data_ = [ "What is this?",
     "This is a pen.",
     "Hello, World!",
     "All your base are belong to us" ]

main = mapM_ p $ mapReduce mapper reducer $ zip (iterate (+1) 0) data_
     where
      p (k, v) = putStrLn $ show k ++ "\t" ++ show v

249 名前:名無しさん♯ mailto:sage [2008/02/25(月) 14:50:11 ]

-- utils

orderBy :: (Ord k) => (a -> k) -> [a] -> [a]
orderBy fk = sortBy (\x y -> fk x `compare` fk y)

groupBy :: (Eq k) => (a -> k) -> (a -> v) -> [a] -> [(k, [v])]
groupBy _ _ [] = []
groupBy fk fv l = let key = fk $ head l in
          let (g, rest) = partition (\x -> fk x == key) l in
          (key, map fv g) : groupBy fk fv rest

split :: [Char] -> String -> [String]
split sep s = case break (\c -> any (==c) sep) s of
        (v, []) -> [v]
        (v, h:t) -> v : split sep t

250 名前:名無しさん♯ mailto:sage [2008/02/25(月) 14:52:45 ]
こうやって見ると、F#は.NETの資産を使える分、すごく楽だなあ・・・。(´・ω・`)

251 名前:名無しさん♯ mailto:sage [2008/02/25(月) 20:37:46 ]
こだわる人はこだわる修正でつ。(´・ω・`)

mapper :: (Int, String) -> [(String, Int)]
mapper = map (\s -> (map toLower s, 1)) . filter (not . null) . split " ,.!?" . snd

252 名前:デフォルトの名無しさん mailto:age [2008/02/26(火) 20:27:17 ]
やはは

253 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 07:36:31 ]
>>247
NTP対応って何よ?
これか
>米国国家毒性プログラム(べいこくこっかどくせいプログラム、英: National Toxicology Program 、略称: NTP )
とはアメリカ保健社会福祉省が実施している化学物質の毒性研究をまとめ、発がん性物質の分類、試験を行う計画である。

254 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:01:10 ]
面白いと思って書き込んでるのがすごいよな

255 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 12:12:17 ]
named template(?) parameter



256 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:34:54 ]
むしろ名古屋トヨペット

257 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 09:58:07 ]
時間同期のプロトコルにきまっとるだろう

258 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 09:33:17 ]
自分のプログラムの中にF#のインタープリタを組み込みたいんですが可能ですか?
今のプログラムはC#で書いていて、その挙動の一部をカスタマイズできるように
したいのですが、せっかく覚え始めたF#で書ければいいなぁと思っています。

259 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:53:39 ]
キーワードはCodeDOM。
あとは自分で調べろ>>258

260 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:38:29 ]
Visual Studio持ってないとF#って使えないの?
一応インストールはできたんだけど、コマンド打ってくだけ。


261 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 17:43:18 ]
VSShellがあれば使える。
あと、SharpDevelop 3.0で使えるようになる予定。Beta1で載った。

262 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 18:12:16 ]
VSShellをDLしようと思って、Visual Studio 2008 SDK 1.0をDLしたんだけど
Visual Studioがインストールされてないとだめみたいだ。VSShell単体って
どこにあるの?てか、あるの?

263 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 18:13:53 ]
あったわ。

264 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 19:12:55 ]
ハローワールドできたわ。
で、いい本ないの?

265 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 19:15:17 ]
www.amazon.com/Foundations-F-Experts-Voice-Net/dp/1590597575/ref=pd_bbs_sr_2?ie=UTF8&s=books&qid=1206698720&sr=1-2

Foundations of F#

ネイティブが分かりにくいと酷評してるんだが、読んだ人どう?



266 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 19:40:56 ]
全部読んでないが、Expert F#のほうが分かりやすい。
内容も別にExpert向けというわけでもないし。高度な話題も載ってるが。

267 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 19:56:18 ]
>>266
そうなんだ。
星の数のとおりか。
でも高いな。。

268 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 10:36:13 ]
すみません、WinAPI呼び出しわかる方いますか?やりたいこと→PeekMessage呼び出し

[<DllImport("user32.dll", EntryPoint="PeekMessage" ,SetLastError=true,CallingConvention=CallingConvention.StdCall)>]
let PeekMessage( (lpMsg : ref MSG),(hwnd : Int32),(wMsgFilterMin : Int32),(wMsgFilterMax : Int32),(wRemoveMsg : PeekMsgOption)):bool = failwith "extern";;

エラーメッセージ
 The type 'MSG' is not defined.
 The type 'PeekMsgOption' is not defined.

MSG構造体については
自分の環境(Win2k,VS2005,.Net framework 2.0.50727.42)ではwindowsbase.dllがないようなので
これはXPかVistaを使えってことでしょうかね,..
 msdn2.microsoft.com/ja-jp/library/system.windows.interop.msg.aspx
また、PeekMsgOptionはオンラインのMSDNではほとんど情報がないようです
そもそも、VS2005のF#プロジェクトでは「参照の追加」はできないのでしょうか?


269 名前:268 mailto:sage [2008/04/21(月) 00:39:32 ]
↓XPと.net framework3.0入れたらコンパイル通ったので、何かの参考までに。

open System.Runtime.InteropServices;;
open System.Windows.Interop;;
[<System.Flags>]
type PeekMsgOption =
| PM_NOREMOVE = 0
| PM_REMOVE = 1;;
[<DllImport("user32.dll", EntryPoint="PeekMessage" ,SetLastError=true,CallingConvention=CallingConvention.StdCall)>]
let PeekMessage( (lpMsg : (ref <System.Windows.Interop.MSG>)),(hwnd : Int32),(wMsgFilterMin : Int32),(wMsgFilterMax : Int32),(wRemoveMsg : PeekMsgOption)):bool = failwith "extern";;


270 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 18:42:16 ]
そりゃそうだ。
System.Windows以下(Forms除く)は.NET Framework 3.0からのWPF。

そこのURLの先にもはっきりとこうかいてあるはずだ。
バージョン情報
.NET Framework
サポート対象 : 3.5、3.0 SP1、3.0

System.Windows.Forms.Messageなら2.0でも使える。

PeekMsgOptionについてさっぱり見つからないのは、
単にその2つの定数を宣言するためだけに即興で作ったからではないか?
もともとはただの符号無整数型だし。
msdn2.microsoft.com/en-us/library/ms644943(VS.85).aspx


271 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 01:51:43 ]
MSGとかの構造体を自力で実装しなくていいってことか?
まじ.netとかそうなってるの?
そもそも実行できたのかあやしいんだが

272 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:14:11 ]
さらに追記
(lpMsg : (ref <System.Windows.Interop.MSG>)の箇所は
(lpMsg :System.Windows.Interop.MSG)にしないと実行時にマーシャリング系のエラーが出る。
しかしどちらにせよ、デバッグモードで動かすと構造体のサイズ違うっていわれるから
自分でMSG構造体定義した。


..けれど結局、やりたかったことは、Win32API使わなくてもできたよotz

273 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 08:32:37 ]
1.9.4.15 リリース

274 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:26:43 ]
>>171
OCaml, Haskell, Lispなどの関数型言語はラムダ計算という理論が骨組みにあって、
特別な構文を使わずに、柔軟なプログラミングをすることができる。
関数を抽象化するためのdelegateや、多相型を表現するためのgenericsなども、
特別な構文無しにプログラムできる。

しかも、キャストや、nullを使う言語よりも、実行時の安全性が高い。

関数型言語を知っている学生は、プログラミングの質に対する意識が非常に高いのが多い。
OCamlができる優秀な学生を雇って、F#のプロジェクトをやれば、いいんじゃね。

275 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 17:14:41 ]
FizzBuzz 2.0 ですね。わかります。



276 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 17:35:07 ]
>>274
学生 プッ

277 名前:デフォルトの名無しさん [2008/05/05(月) 01:32:22 ]
こんにちは。
F#の開発環境って何があるんでしょうか?
・VS.NET拡張
・エディタとコンパイラ
以外にはありませんか?

278 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 07:15:19 ]
つ インタプリタ(fsi.exe)

279 名前:デフォルトの名無しさん [2008/05/05(月) 07:43:21 ]
Expert F#のPDFを買ったお

Expertというわりにぜんぜん入門から対応しているから、いいね。
しかし、600ページ以上あって読み応えありすぎだw

280 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 07:44:25 ]
>>278
good! 補間や履歴も聞いていいですな。

しかしC-Aで行頭、C-Eで行末移動がほしかったな

281 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 08:06:22 ]
ebook版ってあったのか。英語はわかりやすくてよいよね
ただ、分厚いから俺は辞書的に使ってる

>>280
つ fsi用のEmacsモード作ろうぜってスレッド。俺は試したことないけども参考までに
ttp://cs.hubfs.net/forums/thread/4004.aspx


282 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 14:23:56 ]
>>277
ttp://www.infoq.com/jp/news/2008/03/sharpdev-3-beta

283 名前:デフォルトの名無しさん [2008/05/11(日) 03:09:37 ]
F#のライセンスについて、市販製品に使うときの注意事項を3行でplz

284 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 09:07:12 ]




285 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:42:58 ]
fslexってまだ日本語対応してないのな・・
ttp://www.strangelights.com/fsharp/wiki/default.aspx/FSharpWiki/fslex.html

 { open Microsoft.FSharp.Text.Printf;; }
 rule strtest = parse
  | _ { printf "%c" (Lexing.lexeme_char lexbuf 0); strtest lexbuf }
  | eof { raise End_of_file }
 {
  //こっから実行コード
  let test s = strtest (Lexing.from_string s);;
  try test "aiueo" with _ -> printf "\n--end--\n";;
  try test "あいうえお" with _ -> printf "\n--end--\n";;
  printf "あいうえお";;
 }
実行結果
 aiueo
 --end--
 ?????
 --end--
 あいうえお




286 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:30:42 ]
ふとおもったんだがLispの.NETなやつってある?

287 名前:デフォルトの名無しさん [2008/05/17(土) 09:49:01 ]
>>286
List of CLI Languages - Wikipedia, the free encyclopedia
en.wikipedia.org/wiki/List_of_CLI_Languages

IronLisp, L#, DotLisp

NemerleもLispを参考にしてるらしいな

288 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:33:20 ]
英語のwikiは凄いな
P#とかA#とかあるw

289 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:03:43 ]
これみてP#やってみたくなったw

290 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:54:21 ]
ううむ,原理的には JVM でもいろいろできるんだろうけど,
MSIL (っていうのか?)上での方がバリエーションが多いなぁ.
これって一応MS的にはドッキリ大成功みたいな感じなのかね?


291 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:37:21 ]
>>290
MSは.NET 1.0のSDKにLISPのコンパイラを付けてたくらいだから
最初から狙って取りに行ってたんだと思うよ。

292 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:56:32 ]
MSはCOMでも多言語に凝っていたな。

293 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:29:12 ]
>>245
そもそもこの例ではfold_leftを使って、
let sum = fold_left (+) 0
のようにできるのでは。(やぼですかそうですか)

末尾再帰のスタイルとしてはsum2の方がよい気がします。
>もともと引数は「入力、出力」の順で書いてたので。
関数型言語では、部分適用などができるから、この考え方はやめた方が。

294 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:19:35 ]
列挙型の扱いってよくわからないんですが誰か助けてください
今Visioのオートメーションのプログラム作ってて、以下の定数と
msdn.microsoft.com/ja-jp/library/cc376719.aspx
以下のオブジェクトのTypeの値を比較する文が書きたいが
msdn.microsoft.com/ja-jp/library/cc377211.aspx
型があわないと文句言われます

今の俺の認識
deprecated1:Idiomを使う
deprecated2:Enum.combineを使う
今後:|||や&&&などのBitwise andやorを使う。最新版にコンパイラ変えたら、これつかえと警告でた

以下思いつく限り試してみたもの。全滅
if (obj.Type = Visio.VisShapeTypes.visTypeGuide) then ...
if ((obj.Type &&& Visio.VisShapeTypes.visTypeGuide) <> 0) then ...
if (obj.Type = (Visio.VisShapeTypes.visTypeGuide : int16)) then ...
if (obj.Type = (Visio.VisShapeTypes.visTypeGuide :> int16)) then ...
if (obj.Type = (Visio.VisShapeTypes.visTypeGuide :?> int16)) then ...
if ((obj.Type:>int) = (Visio.VisShapeTypes.visTypeGuide :> int)) then ...
msg (Microsoft.FSharp.Compatibility.OCaml.Obj.magic (s.Type.ToString())); (* これは数値5 *)
msg (Microsoft.FSharp.Compatibility.OCaml.Obj.magic (Visio.VisShapeTypes.visTypeGuide.ToString())); (* これは文字列が出る *)
(obj.magic ごにゃごにゃ).ToString()はエラーになります

295 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 08:25:16 ]
OCamler な俺には 294 ってキモすぎてしょうがないんだが。
F# プログラムってこうなの?




296 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:33:50 ]
パターンマッチングつかえってことかい?


297 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 10:31:35 ]
いや、Obj.magic とか、キモい


298 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:13:10 ]
名前空間深すぎて読み辛すぎるな

299 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 01:17:34 ]
Ocamlerってなんて読むの?おかむらー?


300 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:25:13 ]
MinCamler?
SML#ist?

301 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 10:44:49 ]
>>299
オブジェクティブラクダ

302 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:26:15 ]
OCaml 使いは 岡村 なのか・・・

303 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:59:55 ]
だからOでオブジェクティブなんだよw

Camlはフランス語でラクダ(キャメル)の意。

オブジェクティブキャメラー。

304 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:17:58 ]
ラクダー

305 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 05:50:15 ]
>Camlはフランス語でラクダ(キャメル)の意。
大嘘こいてんじゃねーよ




306 名前:デフォルトの名無しさん [2008/06/16(月) 08:30:41 ]
C: Categorical
A: Abstract
M: Machine
L: Language

307 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:44:39 ]
>>305
低脳w






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

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

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