【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

F#

MS Officeの数式をTeXに変換

Microsoft Officeで数式を書くのに慣れてTeX形式で入力するのが苦痛になって来たので、変換プログラムを作りました。Windows専用です。 mml2tex.fsx [Raw形式で表示] → 保存(UTF-8) 【注】自分の必要とする範囲しか実装していません。変換部は200行程度で不…

Windows上のXamarin StudioでF#プロジェクトをビルド

Windows上のXamarin StudioでF#プロジェクトをビルドしようとすると、最近のバージョンでは失敗します。 Xamarin Studio F# Language Binding 結果 4.0.12 3.2.15 OK 4.0.13 3.2.15 ビルドに失敗しました。. MSBuild operation failed 4.0.13 3.2.19 ビルド…

F#を教えるための環境構築

この記事はF# Advent Calendar 2013の2日目の参加記事です。昨日はトップバッターの@igetaさんでした。短いコードにデータベースのアクセステクニックが詰まってとても参考になります。 いげ太の日記: Micro ORM を128行で 私の記事は、勉強会でF#を教えるた…

F#でJIT

今までPythonやC#やNode.jsでJITを実装しました。 PythonでJIT (Windows 32bit) PythonでJIT (Mac OS X 64bit) C#でJIT Node.jsでJIT 今回はF#版です。C#版をほとんどそのまま焼き直しただけですが、それだけでは面白くないので、環境を判定して64bitにも対…

アクティブパターンをどう捉えるか

F# C#

F# Advent Calendar 2012 第16日目の参加記事です。 昨日 @kyon_mmさん SpecFlowについて 明日 @linerlockさん F#製のビルドツール, FAKEで遊ぶ 今年のF# Advent Calendarは実用がテーマです。私はアクティブパターンをなかなか実用できないでいましたが、よ…

副作用のある評価関数

F#

このエントリは F# Advent Calendar 2011 第17回目の参加記事です。狙ったわけではありませんが去年と同じ17番手です。元ネタは[twitter:@gab_km]さんの東京F#読書会 20110930に参加したとき、UNIX V6で使われているK&R以前の古いC言語のlexerを書いていて、…

C#で学ぶF#入門 完了報告

C# F#

id:n7shi:20110620で告知したC#で学ぶF#入門が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: cs2fs.pdf(全ページ), cs2fs.docx(1-11ページ), cs2fs-2.docx(問8・全問題の回答) Togetter まとめ: http://togetter.com/li/150031 私が…

C#で学ぶF#入門

C# F#

かなり先ですが、F#の入門勉強会を開催します。C#との比較に重点を置いて説明しますが、C#未経験の方でもお気軽にご参加ください。 2011年9月10日(土) 午後1時〜6時 マイ・スペース&ビジネスブース池袋西武横店 7号室 (東京都豊島区南池袋1-16-20 ぬかり…

構造を表示

id:n7shi:20101204のファイルシステム読み込みツールを改造して、ディレクトリやファイルの構造が表示できるようになりました。今まではイメージ全体をZIP圧縮して取り出すことしかできませんでしたが、ファイル単位で取り出せるようになりました。Windows F…

判別共用体 (1)

F# C#

以前、C#からF#への変換によって、F#に触れるきっかけを作ろうとしました(id:n7shi:20090722, id:n7shi:20101226)。この方法だととりあえずF#で何か作れるようにはなりますが、F#特有の概念の理解にはあまり役に立ちません。ぜくるさんが判別共用体につい…

言語変換でいきなり実用を目指す

※このエントリは F# Advent Calendar jp 2010 第17回目の参加記事です。F#の話題を目にしても「何やら難しそうなコードが掲載されていて、自分には関係なさそうだ」と素通りしたことはないでしょうか?実は、私もそうでした。F#の本を入手してぱらぱら眺めて…

ファイルシステムの読み込み

id:oraccha:20101101の手順を参考に、UNIX V6をSIMHで動かしてみました。分析のためファイルを取り出そうとしたのですが、TCP/IP以前のOSのためネットワークが使えるのか不明で、ディスクイメージからファイルを取り出す方法も分かりません。仕方ないのでカ…

圧縮・展開アプリ

F#でZIPの圧縮・展開を行うアプリを作成しました。GUIデザイナーの関係上、GUI部分はNemerleで作成しました。パブリックドメインで置いておきます。 http://github.com/7shi/FSharpZip Deflateの展開は規格通りに実装していますが、圧縮は固定ハフマンのみサ…

クラス定義の構文

F#

F#のクラス定義の構文について、ずっと「なぜこのような書き方をするのか?」という疑問を持っていました。考えても分からないので、とりあえずアプリオリな規則として使い続けて来ました。しかし先ほどふと、状態を持ったクロージャを返す関数に見立ててい…

Streamの一部を取り出す

C# F#

Streamの一部を取り出すため、別のStreamでラップしてみました。C#とF#の両方のコードをパブリックドメインで貼っておきます。C#とF#の対比や、カスタムStreamの例として使えるのではないかと思います。F#の構文はC#と掛け離れていますが、簡潔なので慣れれ…

割り算

F#

id:n7shi:20100802で実装した割り算をF#に移植しました。ついでに剰余や、商と剰余をtupleで返す関数も実装してみました。剰余だけを求めるときは商が不要なので簡単です。 http://gist.github.com/512947

高速化

id:n7shi:20100727でAlpha逆アセンブラをインタプリタ上で動かしましたが、あまりにも遅かったです。使用しているすべてのlibc関数をfopen()等と同じようにF#でインタプリタ側に実装して、ループの無駄等を見直しました。その結果、約10倍ほど高速化しました…

逆アセンブラのホスティング

C言語でAlphaの逆アセンブラ(以下7d)を開発して、id:n7shi:20100712でSilverlight化したAlphaインタプリタ上で動かしてみました。デフォルトでDisassembleのタブに出てくるアセンブリが7dの出力です。横のコンボボックスで従来の組み込み逆アセンブラと切…

最強コンビ?

VS2008ShellのF#ではGUIデザイナを使うことができません。複雑なレイアウトをコードだけで書くのは面倒なので、他の言語と組み合わせることにしました。C#やVBは使えないため、それ以外の言語を色々と試した結果、Nemerleに行き着きました。ツールチップがカ…

逆アセンブラ・インタプリタ

id:n7shi:20100710の方法でVWD2010EEでもF#が使えるようになったので、id:n7shi:20100709でF#に移植したAlpha逆アセンブラ・インタプリタをSilverlight化しました。 実行 ⇒ http://7shi.net/betelgeuse/ ソース ⇒ http://github.com/7shi/Betelgeuse/tree/20…

列挙型配列の初期化エラー

【追記1】いげ太さんより、XP SP3 + Visual Studio 2010 Proの環境でも同様の問題が発生するとのご報告がありました。【追記2】いげ太さんより、Don Syme氏直々のご回答をご報告いただきました。 window.twttr = (function(d, s, id) { var js, fjs = d.getE…

VWD2010でF#

SilverlightでF#を使用する場合、Visual Studio 2010 ProfessionalではC# SilverlightアプリケーションとF# Silverlightクラスライブラリを組み合わせる方法が推奨されているようです。 F# for Silverlight 4 available - Inside F# フリーのVisual Web Deve…

逆アセンブラ・インタプリタ

id:n7shi:20100701で開発した逆アセンブラ・インタプリタをF#に移植しました。Visual Studio 2008 ShellでF# Integrationを使用しています。 http://github.com/7shi/Betelgeuse/tree/20100709 SilverlightではなくWindows Formsを使用しています。Silverlig…

C#プログラマのためのF#入門

C# F#

C#経験者が手っ取り早くF#を使おうとすると、クラス定義の文法がかなり違うことに戸惑うと思います。そこでクラス定義を中心にC#からF#への変換方法をまとめました。 F# - 七誌の開発Wiki すべてのサンプルでC#とF#を併記しています。C#の知識を基にF#を使い…

Yellow for F#

F#

id:takuto_hさんの試作言語YellowをF#に移植しました。 YellowFS-20090720.zip F#は簡潔に記述できる言語です。単に文法の違うC#として使っても、記述性の面でメリットはあると思います。もっとも実用面ではVisual Studioのサポートが極端に違うためなかなか…

ファイルの一括コピー

F#

特定のディレクトリ以下にあるJPEGファイルを一括でコピーする必要に迫られました。VC#でプロジェクトを作るのが面倒だったのでF# Interactiveでやってみました。ファイル名の重複を避けるため更新日時をファイル名にしています。 let recdir dir f= let rec…

値型と副作用

C# F#

F#で値型の操作に失敗してハマりました。 ※以下のプロンプトはid:n7shi:20090612のセミコロン省略版fsiを使用しています。 > let r=Rect() val r : Rect > r.Union(Rect(1.0,1.0,2.0,2.0)) val it : unit = () > r.ToString() val it : string = "0,0,0,0" U…

F# Interactiveの改造

F#

F# Interactiveはとても便利なのですが、セミコロンを2つ入力するのが面倒です。そこでセミコロンを省略して、インデントも自動化してみました。使用例は以下の通りです。空行でインデントから抜けています。 > let f x= - if x%2=0 then - "偶数" - - else …

対話的操作

F# InteractiveからWPFの図形を操作してみました。LOGO気分でWPFの操作を覚えられるかもしれません。WPFを読み込みます。 #r "PresentationCore.dll";; #r "PresentationFramework.dll";; #r "WindowsBase.dll";; open System.Windows;; open System.Windows…