F#マスターへの道内検索 / 「用語の問題」で検索した結果

検索 :
  • 用語の問題
    用語の問題-コンピュテーション式、ワークフロー  「モナド」という言葉の意味、というか「何を指してモナドといっていいのか」の範囲がぼんやりと分かったような気持ちになるまで、僕は何ヶ月も要しましたが、今また、僕は同じような問題に頭を抱えています。  ワークフロー、計算式、コンピュテーション式、シーケンス式、計算式ビルダー、カスタムワークフロー、非同期ワークフローなど、ワークフロー周辺には怪しげな言葉がたくさん渦巻いています。これらの言葉はそもそもそれぞれ何を意味しているものなのでしょうか。  そもそも「Programming F#」で「計算式」という言葉を見たときから、「なんだか『食パン』みたいで嫌な用語だなぁ」と感じたのですが、「Programming F#」「実践F#関数型プログラミング入門」の両方を並べて読み比べても、いまだに「計算式」という言葉の意味するものというものが掴みきれ...
  • メニュー
    ...OPとワークフロー 用語の問題 シーケンスを考える シーケンス式はどう動いているのか lazyさ加減に萌 年俸1000万の会社 月謝3500円のそろばん 非同期処理を考える C#フォームとの連携 素数夜曲 ひまわりっぽいの その他 letとshadowing TDDの実践 二桁の数の秘密 Win8・Winタブ・VS11 動的計画法 エッシャーの爬虫類 ペンローズ・タイル イメージPDFファイルの処理 型から始めるプログラミング 姉妹サイト 教えて!アロイ人! Software Foundations日本語版 取得中です。 ここを編集
  • 月謝3500円のそろばんの問題
    月謝3500円のそろばん塾で出たチャレンジ問題  「子供が通っているそろばん塾で、みんなで競う系の問題が出されたのを見ていると、ちょっとムズムズしてしまいVS2008を起動してしまった、の巻き」です・・・大人気ない。 お題 商品 金額 プロ野球 19373円 ディズニーランド 20453円 回転ずし 15906円 ピアニカ 3351円 子供部屋リフォーム 238440円 . . . というような商品リストがあり、この中で好きな組み合わせで買い物をして、合計が50万円に一番近い人の勝ち、というものです。 データの用意  とりあえず、こんなリストを作ってデータを与えます。 let goods = [ ("プロ野球", 19373) ("ディズニーランド", 20453) ...
  • 年俸1000万の会社の試験問題
    年俸1000万の会社の試験問題  名古屋Scala練習場の問題がTwitterに取り上げられていたので、F#で挑戦してみました。  シーケンスの練習問題としてとてもいい問題なのではないかと思います。 お題 4種類のアルファベット "A,C,G,T" から成るn文字の文字列のうち、"AAG"という並びが含まれる文字列を全て列挙するプログラムを書きなさい。ただし、nは3以上の整数とし、文字列内に同じアルファベットが出現しても構わないものとし、出力順序は問わないものとします。 ... 適性検査に合格された方はその生産性を実現可能な方です。生産性に見合う初任給として年俸1000万円をご用意しております。 元ネタはこちら (しかしハニトラっぽいなぁこれ)っていうか、適性検査はPerlまたはJavaって書いてあるw F#だと...
  • 動的計画法
    月謝3500円のそろばん塾で出たチャレンジ問題(動的計画法で)  この記事の続きです。  Arigataさんが書かれたエントリをフムフムと呼んでいて、MSのソルバに興味を持ちつつ、そもそも「部分和問題」という言葉も「ナップザック問題」という言葉も知らなかった自分の不勉強に恥じ、ちゃんと勉強しないとなぁ・・・と考えているだけの日々を送っていたのですが、何の因果か「アルゴリズムを学ぼう」などという本が絶好のタイミングで出てしまい、この中にこの「ナップザック問題」の解説が乗っていたので、これを参考にF#で「動的計画法」を使った解法を試してみることにしました。  お題自体は前回のこのエントリと同じです。 動的計画法  まず基礎知識として、このそろばん塾の問題は、「部分和問題」という有名なカテゴリに属する問題で、金額の部分が整数でない場合には「NP完全」という、要素数が...
  • トップページ
    F#マスターへの長い長い道のり  マイクロソフトがF#2.0をVisualStudio2010に標準搭載してから1年以上の時間がたちました。しかし、関数型言語自体になじむまでには沢山の乗り越えなければならない「壁」があります。僕自身も乗り越えてきたものがありますし、まだまだ自分の前に立ちふさがっていて手がかりすらつかめないものもあります。  日本語の本もまだ多いとは言えないF#ですが、それでもこうやって、勉強しながらでも書ける物を書いて残していけば、僕の後に勉強する人が少しでも楽になるかもと、勉強の過程で分かってきたことを書き留めておくことにしました。  こう書くと人のためにやっているようですが、池上彰氏の「本を読むときは、読んで分かった内容を自分が人に説明できるかを確認しながら読みなさい」という言葉に影響されているのです。 コンテンツ  F#の色々なトピックについて、なるべく...
  • StatefulFuncはなぜ動くか
    StatefulFuncはなぜ動くのか?  このページを見ているあなた、きっとオライリーの「Programming F#」を読み進めて、StatefulFunc(stateワークフロー)の理解に躓き、「何でこんなに分からないんだろう」「他の人は理解できているのだろうか」とStatefulFunc(もしくはstateワークフロー、状態ワークフロー、StateBuilder、計算式、コンピュテーション式、計算のビルドなど)というキーワードで検索して、何か情報はないかとここを見ているのではないでしょうか。  心配要りません。あなたは普通の人です。あの説明で理解できる人は、他の関数型言語(Haskellなど)をすでに十分理解している人だと思います。F#が初めての関数型言語、という人は、あの説明で分からなくてむしろ当たり前です。 「Programming F#」最大のヤマ場「Sta...
  • StatefulFuncの意味的理解
    StatefulFunc/StateBuilderとは何なのか  これまで書いてきたことを読んでいただけると、StatefulFunc/StateBuilderについて「入力してコンパイルすると確かに動くけど、なぜどのように動いているかさっぱりわからない」という状態は脱出できると思います。しかしこれは単に機械が動く仕組みを理解できただけで、その設計意図や目的が理解できたわけではありません。第一、普通のプログラムを読むときにこのような読み方はしません。変数の意図などを考え、その値がどのように使われた結果、どこでどのようなことが起こって結果が発生しているのか、という道筋でプログラムを解釈するのが普通だと思います。  ここでは、StatefulFunc/StateBuilderが、意味的にどのように動いているかを解説したいと思います。とはいえ、StateffuiFunc/StateBuil...
  • letとshadowing
    letとshadowing 代入と束縛  僕が始めてF#のソースを見た時、最初にドン引きした記述がこの let x = 1  という表記でした。これを見たとき頭に浮かんだのは、僕が中学のとき触れた日立の「BasicMaster Jr.」というパソコンのBASICでした。この頃のBASICには、代入文にletを書く必要があったのです。その後、NECのPC-8801でのN88-BASICではletを必要としなくなったため、代入がletで始まるというのはまさに「ここまで戻らないといけないのか・・・・」という衝撃だったのです。  実際、BASICから始めてPASCAL、C、VB、C++、Javaという言語遍歴の僕にとって、関数型言語というのは「そこまで戻らないといけないもの」であったわけですが、このlet文の衝撃はその巻き戻しのスタート地点ともいえるものでした。正直、関数型言語になじむ...
  • while展開編
    StatefulFuncはなぜ動くか while展開編(オマケ) 1.whileを使ったループの導入  StateBuilderにはWhileメソッドも実装されており、計算式の中にwhileループを記述できます。whileループはその構造上破壊的な代入が伴うのであまり関数型プログラミングで使われることがありませんが、せっかくなのでこれも試してみましょう。などと調子よく書き始めてから色々試したのですが、想像以上にイバラの道でした。ほとんど参考になる情報がなく、あっても間違っていたりで何日も悩まされました。  そんなこんなで書いたのがこのclaculatorActionsです。 let GetTotal = StatefulFunc (fun (total, history) - total, (total, history)) let calculatorActions =...
  • 型から始めるプログラミング
    型から始めるプログラミング この記事は「F# Advent Calendar 2013」16日目の記事です。 型に導かれて  静的な強い型を持った関数型プログラミングにある程度馴染んでくると、次第に「コンパイルを通ったものは大抵動く」という不思議な感覚を持つようになります。この感じは手続き型プログラミングしかやったことがない人にはなかなか伝わらないもので、そんな話をしても大体「そんなわけあるわけないwww」というような反応を受け、こちらもうまく伝えられずモゾモゾすることになりがちです。  もちろん「コンパイル通ればできてる」というのが正しくない、というのは分かりきったことなのですが、「コンパイルを通った時点で動いたものに何の問題もなかった」という事象の確率がかなり高いのもまた統計的なデータこそないものの皆様肌で感じているのではないかと思います。  こういう「...
  • エッシャーの爬虫類
    エッシャーの「爬虫類」 - 平面を敷き詰める -  先日、色々調べ物をしているうちに、英語のWikipediaで「壁紙の分類」というのを見つけてしまいました。平面を埋め尽くせる図形は、ここに挙げた17パターンのいずれかに属するとのこと。ほう。  これを見ていて、「ゲーデル・エッシャー・バッハ」に育てられた感のある僕は、「それではあの図形がこの中のどれに属するのか」という疑問を持ったのです。あの図形とエッシャーの「爬虫類」です。  この幾何学模様に魅せられたのは中学校ぐらいの時でしたが、その体験が後になって大学の図書館で前述の本を手に取るきっかけになり、毎日図書館通いをした挙句大学も中退し、さらにいろいろあって今の僕があるのですから人生わかりません。とにかく当時中学生の僕は何時間もこのトカゲを見続けたにもかかわらず、その時はその構造を見抜くことができませんでした。まぁその程度の中学生だ...
  • シーケンス式はどう動いているのか
    シーケンス式はどう動いているのか  実を言うと、僕がF#に入れ込んでいる理由の半分ぐらいはこの「シーケンス式」に惚れたことではないかと思うほど、個人的にSequence式を気に入っている僕なのですが、周りの人(ほとんどJava使い)に熱く語れば語るほど「ぽか~ん」とされるのもまたこのシーケンス式なのです。関数型言語を知らない人にとって、見よう見まねで使うことはできても、これほど不思議な動きをするプログラムはあまりないのではないかと思うのです。  とはいえ、周りの人を「ポカン」化してしまう理由の多くは僕の説明にあり、説明が伝わらない理由は僕自身がその中で何が起こっているのかをちゃんと分かっていないせいである、ということもはっきりしているので、シーケンスの裏の動きを追いかけてみることにしました。  しかし、F#のシーケンス式について深く書かれた日本語の文献も少なく、「Programmin...
  • for展開編
    StatefulFuncはなぜ動くか for展開編(オマケ) 1.forを使ったループの導入  StateBuilderにはForメソッドがきちんと実装されており、計算式の中にforループを記述することができます。試してみましょう。 let calculatorActions = state { for i = 1 to 5 do do! Add i do! Multiply 3 } let res, stat = Run calculatorActions (0, []) これを実行すると、以下のような実行結果が得られます。 val calculatorActions StatefulFunc (int * string list),unit = StatefulFunc fun Delay@184-2 val s...
  • Add展開編
    Add/Subtract/Multiply/Divide展開編  これらの関数は四つありますが、見て分かるように中の演算子が違うだけで内容的にはほぼ同じものです。なので、代表としてAddを展開し、その結果を見て他の三つも展開することにしましょう。  関数展開の基本は、内側から、前からの順番に行います。ただ、どの順でやってもできないということはなく、途中の分かりやすさが若干違うだけのことも多いので、あまり展開順にこだわらず、どこからやっても展開できるような基礎体力をつけておくことも重要です。  というわけで、まな板の上にAdd関数の定義を載せます。VisualStudioを使っている人は、StateBuilderやGetState、SetState、StatefulFunc、Runなどの定義と一緒にソース上に貼り付け、コンパイルエラーが出ない状態にしてください。。 l...
  • TDDの実践
    テスト駆動開発の練習 テストしながら作るということ  アジャイルとかXPとか言われてもう久しいのですが、日本の開発現場にはまだまだ浸透していないようです。僕も仕事でやらしてもらうのは不可能っぽいんで、一人でやってみました。お題は、アジャイル開発の例でよく使われる「ボーリングのスコア計算」です。 ボウリングのスコア計算ルール  ボウリングをやったことをある人は分かると思いますが、あの計算方法は他に類を見ない独特のもので、それがある意味単純なボウリングという競技を熱くさせている要因に思えます。それは以下のようなものです。 基本的に投げるごとに倒したピンの数の和がスコア ただし、1投目で倒せなかったピンがあったら、2投目を投げる。 1投目で倒したピンの数が10なら、ストライクとなり、その次、その次の次に倒したピンの数をストライクの点に加算する。 1投目がストライクでなく、2投目で倒...
  • プラグイン/ニュース
    ニュース @wikiのwikiモードでは #news(興味のある単語) と入力することで、あるキーワードに関連するニュース一覧を表示することができます 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_174_ja.html たとえば、#news(wiki)と入力すると以下のように表示されます。 SlackからWikiへ!シームレスな文章作成・共有が可能な「GROWIBot」リリース - アットプレス(プレスリリース) 【グランサガ】リセマラ当たりランキング - グランサガ攻略wiki - Gamerch(ゲーマチ) ポケモンBDSP(ダイパリメイク)攻略wiki - AppMedia(アップメディア) 【ひなこい】最強ひな写ランキング - ひなこい攻略Wiki - Gamerch(ゲーマチ) モンハンライズ攻...
  • calculatorActions展開編
    もう一山登るぞcalculatorActions展開編  Add関数の正体が分かったところで、残ったcalculatorActionsの征服にかかりましょう。「Programming F#」ではもう少し式が加えられていますが、何行並んでいても本質的には同じなので、returnを入れて3行の式とします。これをVisualStudioに載せてコンパイルが通り、 let res, stat = Run calculatorActions (0, []) の実行結果を確認するところから始めましょう。 let calculatorActions = state { do! Add 2 do! Multiply 3 return "完了!" } 1.Add、Multiplyの展開  まず小手調べに、AddとMultiplyを「...
  • @wiki全体から「用語の問題」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索