「fn」を含む日記 RSS

はてなキーワード: fnとは

2017-04-24

http://anond.hatelabo.jp/20170423213123

a-zと0-9とその他記号系は普通に文字入力

Space/Enter/Backspace/Delete文字入力

Ctrl/Shift/Alt/Winは各種ショートカット

F1ヘルプ

F2名前変更。エクセルセル編集とかも

F3検索

F4 はAltと押してウィンドウ閉じる。単体は個人的には独自ショートカットに割り当ててるから使ったこと無い。

F5 はリロード

F6IMEひらがな

F7 はIMEカタカナ

F8IMEで半角カタカナ

F9 はIMEで全角アルファベット

F10 はIMEで半角アルファベット

F11 は全画面

F12 はブラウザ開発者ツール出す

ESC はいろいろなキャンセルっぽいときに使える。一番使うのはタスクマネージャにCtrl-Shift-ESC。ChromeだとShift-ESC

PrtScr はスクショ。Altと押すことが多め。

ScrollLock はエクセルスクロールのしかた変えるとき

PauseBreak はコマンドプロンプトの流れていくのを一時的に止めるとき

Insert は上書きモードにしたいとき。あと、ShiftやCtrlと組み合わせてカットコピーになるソフトがある

PgUp/PgDn はネットみてるときエディタで一気にスクロールしたいとき

Home/End もブラウザ最初最後に飛んだり、エディタで行もしくは全体の最初最後に飛ぶ時

Tabフォーカス切り替え。あとプログラムとか書くならインデント

CapsLock はShiftと押して大文字固定にしたり、単体で押してアルファベット入力だけどIME使いたいときの切り替えとか

半角全角はIMEの切り替え

NumLock はテンキー付きなら常時ONでいいんだけど、テンキー無しのキーボードテンキー配列入力したいときに押す

無変換はひらがなカタカナ・半角カタカナに切り替えるときに。F6/F7/F8でもいい。個人的にはAHKで修飾キーにもしてる

変換は入力確定したのをIMEで再編集するとき。稀にスペースキーバグって変換できないときにスペース代わりに押したこともある

右側Ctrl/Alt/Shiftはめったに使わないけど、片手で操作したいときVirtualBox特殊キーに使う(安いキーボードだとたまにない)

アプリケーションキー?は右クリック代わり。webページで右クリック禁止されてるときにこっち押したりする

ひらがなカタカナローマ字は使ったこと無い。

Fnキーキーが足りないキーボードについててWi-Fiや画面表示や外部接続の切り替えとかPCキーボード)ごとにいろいろできる。

余り使わないのはあっても、全く使わないはほとんどなかった。

2017-04-05

Ctrlキーのことを

職場女性は「クトゥルキー」と呼んでいる、なんだかどきどきする。

「クトゥルキー」と呼んでいる人がほかにもいないか調べていると、「尻からタコが出ているターキー」の画像エンカウントしてしまった。

Ctrlキーを「クトゥルキー」と呼ぶ人はもっといないのだろうか?

14:55 追記

Fnキーは「フン!」…ではなく「ファンクションキー。」と呼んでいました、残念。

2016-10-23

iOS10の最大の改善点は外付けキーボードでの言語切り替え

iPadで外付けキーボードを使っている人限定なんだが。

半角英数入力用に入力言語に「日本語」と「英語」の両方を入れている人は結構いると思う。

もしそうなら、設定→一般キーボードハードウェアキーボードを開いてほしい。

「Caps Lockで英字モードと切り替え」という項目があるはずだ。

デフォルトではオフだが、これをオンにしてやる。

これでCapsLockキーだけで日英の言語切り替えができるようになる。

ついでに、英数入力時の余計なお世話機能を外すため、設定→一般キーボードに戻って、下の方にある「英語」項目で自動大文字入力スペルチェック、予測をすべてオフにする。

従来、iPadの外付けキーボード言語切り替えはiOS9まではCommand+Space、iOS9ではCtrl+Space、またはFn+地球マークというやり方だった。iOS9にバージョンアップして言語切り替えのつもりでCommand+Spaceを押すとSpotlightが出るようになった。

だけどこうしたAppleアナウンスなしでの仕様変更ユーザーを混乱させてたし(海外掲示板でそういうQAをいくつか見た)、一部のキーボード自分最初に買ったキーボードであるBelkin Thin Typeのことだけど)はそもそもCtrlキーがなくて、半角英数入力のためにソフトウェアキーボードを一回画面に出して英数に切り替えるというアホなことをやらされて、さすがにこれじゃダメすぎるのでCtrlキーのついたキーボードを買わされる羽目になっていた。

単語レベルで半角英語を打つだけなら日本語入力モードShiftキーを押しながら入力、でもできるが、センテンスレベルの長さではこの方法却って面倒だ。だからどうしても入力言語英語を追加しておく必要があった。

自分記憶が正しければ、CapsLockキーでの日英切り替えはiOS10から実装だと思う。

これだと左手小指一本で日英切り替えができるようになり、操作性は格段に上がった。

これなら放ってあったBelkin Thin Typeもまた使えるようになるし、前より入力はしやすくなる。

Actually this masuda article is wriiten with Belkin Thin Type keyboard and iOS10 language switcher.

とても快適だ。

2016-05-01

タッチパッドが効かなくなった

アップデートした後だから勝手に設定切り替わったのかと思ったけど、win10にしてからスタートキーが開かないのでどうしようもない。

ログイン画面だと動くけどログインすると効かなくなる。

ケータイで調べてるとfn+タッチパッド切り替えキーを押せとある

よく見るとそういうのがあり押すと直ったがめんどくせー死ね

2015-08-27

http://anond.hatelabo.jp/20150827133502

キーボードの配置ってなんでこんな古く使いづらい配置のままなんだろうな

さらノートパソコンになると倍率ドンになってやばい 左下がCtrlキーじゃなくFnとか意味不明なの配置したり

カーソルキー4個のところの空白2つに無理やりPageUpとPageDownを配置したりするのそろそろ法律で禁止しろ

キー配置を決めた奴ら絶対使ってねえだろこれ

2015-05-08

次にノートPCを買うときに気を付けることリスト

電源ケーブルの位置が邪魔にならないもの

今のは右側面にある。右利きの自分マウス右側に置くので、ケーブルにあたって邪魔。次は背面か左側面にあるものを買う。

ファンクションキーをそのまま押せるもの

今のはそのまま押すと消音や音量調整になってしまう。ファンクションキーとして使うためにはFnキーを押しながらでないとならない。非常に不便。

音量小さくするのとファイル名変えたりExcelセル編集する頻度はどっちが多いか?音量大きくするのと検索する頻度はどっちが多いか?ディスプレイ/プロジェクタ切り替えと半角変換の頻度はどっちが多いか?

せめてBIOSなどの設定で切り替えられる機種がよい。

左Ctrlキーが一番左下にあるもの

今のは一番左下。これがよい。たまに他人PC操作すると、Ctrlの左にFnキーがあったり、Aの横(自分のではCapsLockがある位置)にあったりするのだが、しっくりこない。

Bluetooth内蔵

今のPC購入時はまったく使う気がなかったのだが、昨年初めて(USBアダプタを買って)使ってみて目から鱗が落ちた。マウスヘッドセットスマートフォンテザリング用)が簡単につながってとても便利。

こんなことならば初めから内蔵しているのにしておけば、USBポート使わずに済んだのにね。








はいはい、どうせ「情弱乙」って言うんだろ。

だったら、他にどんなこと気を付ければいいか教えろよ。

必ず初めに「情弱乙」って書いてからだぞ。

2014-05-26

フランス移民反対の政党首位政党になるのをご存知ですか?

フランス有権者の1/4の支持を得る見込みなのは反移民・反EU政党国民戦線

まあ、フランス以外でもこの流れはある。

スウェーデン 右派民主党が3.3から9.8%へ躍進

デンマーク 右派政党が26.7%の得票率

などなど。

まあ、移民いれようとしている日本も同じ道を辿りそうですね。


5月26日 AFP】22~25日に投票が行われた欧州連合EU)の欧州議会選挙で、フランス極右政党国民戦線National Front、FN)が仏有権者の4分の1余りからの支持を得て同国の首位政党となる見込みであることが分かり、仏政界には激震が走っている。

 仏内務省が発表した開票率80%の暫定結果によると、マリーヌ・ルペン(Marine Le Pen)党首(45)が率いる反移民・反EU政党国民戦線が26%の得票を確実にした。これによりフランス欧州議会に保有する74議席中の3分の1を国民戦線が占めることになる。

 仏経済低迷の責任EUにあるとするEU懐疑論と現政界への怒りと失望という2つの潮流に後押しされた国民戦線は、保守中道連合政党国民運動連合(UMP)の得票率を20.6%に抑え、首位に躍り出た。この欧州議会選で国民戦線は、フランス全土で行われた選挙としては過去最高の支持率を獲得した。

2010-06-13

ノートパソコンの画面の明るさ設定

Fnキー+F5,Fnキー+Homeで画面の輝度を上げる(明るくする)

Fnキー+F4,Fnキー+Endで画面の輝度を下げる(暗くする)

取扱説明書を読まないタイプなのでこの機能に気づくのに10ヶ月かかった。

輝度調整をやろうとして「ノートパソコン バックライト 設定」というキーワードでググったが何も見つからなかった。

同じような人のためにバックライトという単語を入れておこう。

2010-03-20

やっぱり最初に触れて欲しいのはデスクトップPCだと思う

入学、進学シーズンでパソコンを買ってもらう学生も多かろうと思う。

周囲で聞いた限りでは、やはりノート型が多い。まあ、他の客層の売れ行きも考えると妥当な所だろう。配線が最小限(電源ケーブル)で済む、省スペースで持ち運びできるという利点も大きいのかも知れない。

しかし、である。

それでもやはり、デスクトップ型を「最初の一台」に選んで欲しいと思うのは私は少数派だろうか。時代遅れだろうか。

以下、その理由を挙げる。ちなみにここで言う「デスクトップ型」とは、「本体」「ディスプレイ」「キーボードマウスなど」が分離しており、ケーブルや無線などでつながっている物を指す。

価格性能費に優れる

同じ値段ならば、確実にデスクトップ型が良い。性能が高ければ出来る事はそれだけ増える。使い始めたばかりの初心者にはあまり関係ないかも知れないが、使い慣れる始めると、「あれが出来ない」「これは厳しい」という性能の壁が、選択肢を狭める日がやってくるだろう。

キーボード

ノート型はそのサイズ故にフルキーボードを搭載している物が少ない。最近テンキーまでついているものも増えたが、それでも十分とは言い難いし価格も割高だ。特に、Insert、Del、Home、End、PageUp、PageDownなど、使いこなせれば非常に便利なキーがFnキーを押さないと機能しないのは非常にもったいない

ディスプレイ解像度

バリュ価格ノート型の画面解像度を見てみると、ほとんどがWXGA(1366x768)以下である。縦サイズ768というのは、10年前のディスプレイ相当である。

フルHD(1920x1080)解像度液晶ディスプレイですら2万円台で買えてしまうこのご時世に、これは少々寂しい。

何より、画面の大きさは作業効率、能率に直結するウィンドウを二つ並べる事すらままならない環境では、せっかくの最新OSも宝の持ち腐れだ。もしパソコンでも「ひと味違う自分」を追い求めたいのなら、やはり大画面を使えるデスクトップ型をお勧めしたい。

拡張

ノート型はそれ一台で「パソコン」の性能が完結しているため、性能の拡張デスクトップ型よりも困難である場合が多い。メモリハードディスク程度ならば頑張れば可能かも知れないが、前述の画面解像度キーボードグラフィック能力などは増設・置き換えが非常に難しい。対するデスクトップであれば、後から交換できる部品の幅が大きい。

故障

それは拡張性に限った話ではない。万が一呼称した時に交換によって回復する可能性も大きく違う。仮に液晶ディスプレイが壊れたら、ノート型ならばメーカー修理に出さなければならず、その間の数日から数週間はパソコンが使えなくなる。しかしデスクトップ型ならば(メーカー製の一体型でなければ)、家電量販店に走ってディスプレイを買い換えるだけで事足りる。

キーボードも、故障したらノート型は交換は不可避である。どうしても手放せない場合、USB接続タイプキーボード接続するなどしなければならない。しかしデスクトップ型であればメーカーに修理に出す必要は無い。

道具選びは自分への投資

これはパソコンに限った話ではないが、これから何年と使う道具はやはり「それなりに」こだわるべきだろう。特に今後は、職種問わずパソコンで「出来て当たり前」のレベルが少しずつ上がっていくと思われる。仮にそうならなかったとしても、一歩踏み込んだスキルを身につける事は、その他大勢とは違う付加価値となって自分に跳ね返ってくるはずだ。

2009-07-08

今日やったこと

波の合成

縦軸に強度、横軸に2πνtをとって2つの波を考える

E_1=A_1 sin(2πνt-φ_1)

E_2=A_2 sin(2πνt-φ_2)

E_3=E_1+E_2、これは

波の複素数表示

E_1=ae^(iφ_1) E_2=be^(iφ_2) と複素数平面でベクトルとして書くと、合成波を表すE3ベクトルはただのベクトル和でよい

回折X線強度の計算

構造因子Fを出す

|F|=単位胞の全ての原子によって散乱されるX線の振幅/1個の電子によって散乱されるX線の強度

反射線の強度I∝|F|^2だったことを踏まえつつ

F_hkl=sum f_n e^(iφ) from 1 to N=sum f_n e^(i2π(hu+kv+lw)) from 1 to N

N:単位胞中の原子の数

f_n:原子散乱因子:1個の原子によって散乱されるX線の振幅/1個の電子によって散乱されるX線の振幅

具体的計算
単純立方晶 N=1

どの1個の原子について計算するか(結晶を特徴付けるものを選ぶ)→結晶座標0,0,0の原子を考える

F=f_n e^(2πi(h0+k0+l0))=f_n ←意味:hklに関係なく、ブラッグの条件さえ満たせば回折波が出てくる

|F^2|=fn^2

体心立方晶 N=2

どの2個の原子について計算するか→結晶座標0,0,0と、0.5,0.5,0.5の原子について考える

F=f_n e^(0) + f_n e^(2πi(0.5h+0.5k+0.5l))

=f_n (1+e^(πi(h+k+l)))

F=0|h+k+lが奇数

F=2f_n|h+k+lが偶数

面心立方晶 N=4

どの4個の原子について計算するか→結晶座標0,0,0と、そこから一番近い3つの原子0.5,0,0と0,0.5,0と0,0,0.5について考える

(中略)

F=f_n(1+e^(πi(h+k))+e^(πi(h+l))+e^(πi(k+l)))

宿題

面心立方晶のFは、どのようなh,k,lでどのような値を取るか、パターンを考える

2009-04-21

http://anond.hatelabo.jp/20090421222845

富士通の方も、ここ5年くらいで、仕様がずいぶん変わりましたけどね。

ThinkPadも、確かに変わりましたね。しばらく業務で使ってましたので、心中お察しします。

昔はThinkPadもどきのファンクションキー配列(左上にESCが飛び出してて、右上にも一部飛び出してる)だったんですが、

最近Fnキー併用が増えたり、飛び出し部分がなくなったり、ストロークが浅くなってペコペコしたり。

http://www.saccess.co.jp/oasys/kbcomp.html

その改変の代わり、ドデカいモデル以外にモバイル機も選べるようになったのは、ありがたいところです。

「まだ残ってる」というのは、言い換えれば「おまいらが御布施しないと消しちゃうぞ!」ってことでもあるわけで、

心苦しいところです。

2009-01-27

http://anond.hatelabo.jp/20070218021057

増田が亀レスなんだけど、Lite2って◇キーがないんですよ。

で、[Fn]+[HHK] or [Fn]+[Kana]でWinキー相当の動作ができることになってるんですけど、

これがイマイチ使えない。

いや、VistaでAeroの3Dフリップショートカットキーで使いたいんですが、

上記のショートカットキーが[Win]+[TAB]なんですよ。

HHK Lite2で、たとえば[Fn]+[HHK]+[TAB]と押せば機能するか?といえば、

そうは問屋が許してくれなかったorz

デスクトップの表示のショートカットキー([Win]+[D])とかに関しては、

[Fn]+[HHK]+[D]で動作するので、多少指に無理があることを除けば使えるので、

どうやら[Fn]+[HHK]+[機能キー]という組み合わせが考慮されていない模様。

追記: というか[TAB]キーには[Fn]+[TAB]=>[CapsLock]も振られているので、

[Fn]+[HHK]+[TAB]の解釈が、狙っている[Win]+[TAB]ではなく、

[Win]+[CapsLock]になっている模様。



Vistaなんでキーバインドの変更ツールも限られるし(レジストリを書き換えればできるらしい?)

ちょいと困り中です。

2009-01-20

窓使いの憂鬱HHKB

だいぶ前のことなので結構忘れてるけど。

買ったのはHHKBPro2。OSはWindowsVista

買ってまずしたこと

背面のスイッチをいじってキーを変える。

http://www.pfu.fujitsu.com/hhkeyboard/leaflet/hhkb_backview.html

左◇Fn
右◇Win
DeleteBackspace

左◇あたりにFnを割り振らないと右小指でしかFnを押せなくて面倒。

DeleteよりBackspaceの方が使用頻度が高いので変更。(Fn+DeleteでDeleteを押したことになります)

パソコン側の設定

ノートPC(日本語Windows)で英語配列HHKBを使う時はUSJPを入れるのが限りなく正解に近い。

http://www.trinityworks.co.jp/software/USJPPro/index.php

デスクトップPCではドライバ英語キーボードに設定すればいい。

ノートPCでUSJPを入れていて、USJPにはおまけ機能でいくらかのキーの組み合わせを設定できるので

デスクトップPCでも同じにするためにとりあえず窓使いの憂鬱を入れた。

Vista対応版

http://slashdot.jp/~kazu2/journal/411746

設定はこんな感じにした。

include "104.mayu"

key C-D = Delete
key C-H = BackSpace
key C-M = Enter
key C-Space = $ToggleIME

逆に普通日本語配列キーボードを似非HHKBにする設定。

どこかで見た設定をベースにいじったような気がしますがどこのがベースか忘れた。

自分は左◇キーをFnキーに設定して使っているので無変換キーをFnキーにするとちょうどよくなる。

include "104.mayu"

mod control += CapsLock
def subst *CapsLock = *LControl
key S-Pause = CapsLock

def key 無変換 = 0x7b
mod mod0 = 無変換
key *S-M0-K = *S-Home
key *S-M0-Comma = *S-End
key *S-M0-Apostrophe = Right 
key *S-M0-Semicolon = Left
key *S-M0-LeftSquareBracket = Up
key *S-M0-Solidus = Down
key *S-M0-L = *S-PageUp
key *S-M0-FullStop = *S-PageDown
key M0-R = F5
key C-D = Delete
key C-H = BackSpace
key C-M = Enter
key *S-M0-_1 = F1
key *S-M0-_2 = F2
key *S-M0-_3 = F3
key *S-M0-_4 = F4
key *S-M0-_5 = F5
key *S-M0-_6 = F6
key *S-M0-_7 = F7
key *S-M0-_8 = F8
key *S-M0-_9 = F9
key *S-M0-_0 = F10
key *S-M0-HyphenMinus = F11
key *S-M0-EqualsSign = F12

def key JisBackslash = 0x7d
key JisBackslash = Backslash
key S-JisBackslash = $VERTICAL_LINE

key C-Space = $ToggleIME

HHKBを繋いだ時は上の設定、普通キーボードを繋いだ時は下の設定に切り替えてやってます。

どうでもいいこと

2つあるUSBポートが結構便利。

無線マウスレシーバをここに挿してます。

USBメモリを挿したい時もここ。

重量が結構ある。

レッツノート(1.5kg)とこれを一緒に持ち歩くととても重いのと体積が増えるので最近は置きっぱなしなことが多い。

2008-07-04

javascript継承

javascriptスーパークラスのメソッドを簡単に呼び出したかった。それだけだった。

思いのほか長くなった。車輪を再発明した気がする。

var Class = inherit(SuperClass, {hoge: ...});

のように使い、スーパークラス継承したクラスを作る。

作ったクラスprototypeに、第二引数オブジェクトコピーされたスーパークラスインスタンスを持つ。

第一引数がnullだと、スーパークラスObjectを用いる。つまり、

var Class = inherit(null, {hoge: ...});

var Class = inherit(Object, {hoge: ...});

と同等となる。

また、第一引数が"prototype"をメンバに持たない普通オブジェクト、つまり、

var Class = inherit({hoge: ...});

だと

var Class = inherit(Object, {hoge: ...});

と同等となる。

var obj = new Class({hoge: ...});

インスタンスを作ると、引数オブジェクトコピーを持つオブジェクトとなる。

また、メソッド"initialize"が自動的に実行される。

ただし、コンストラクタ引数を渡さなかった場合は、initializeは実行されない。

オーバーイドしたメソッド内では

this.superapply(arguments);

としてスーパークラスのメソッドを呼べる。第一引数は呼び出すメソッドの引数配列とする。

このとき、呼び出し側のメソッドはコンストラクタやinheritでオーバーイドしたメソッドでなくてはならない。これは呼び出し側のメソッド名を記録する必要があるためである。

そうでない場合は第二引数にメソッド名を渡す必要がある。

var obj = new Class({});
obj.foo = function(){
        this.superapply(arguments);         // X
        this.superapply(arguments, "foo");  // O
};

<html><head>
<script type="text/javascript">
function inherit(superclass, override) {
	if (!superclass)
		superclass = Object;
	if (! "prototype" in superclass) {
		override = superclass;
		superclass = Object;
	}
	var that;
	var func;
	function superapply(arg, name) {
		var prev = {that: that, func: func};
		try {
			var my = this.superapply;
			if (!arg)
				arg = [];
			if (!name)
				name = arguments.callee.caller.caller.methodName;
			if (that &amp;&amp; func &amp;&amp; (!name || name == func.methodName)) {
				that = that.superapply.obj;
				name = func.methodName;
			} else if (name) {
				that = my.obj;
				func = arguments.callee.caller.caller;
				func.methodName = name;
			} else {
				throw new Error("methodName is null");
			}
			var result;
			if (func === that[name]) {
				result = this.superapply(arg, name);
			} else {
				func = that[name];
				func.methodName = name;
				result = func.apply(this, arg);
			}
		} finally {
			that = prev.that;
			func = prev.func;
		}
		return result;
	};
	var prototype = new superclass();
	prototype.superapply = function(){superapply.apply(this, arguments)};
	prototype.superapply.obj = superclass.prototype;
	if (override)
		for (var i in override) {
			prototype[i] = override[i];
			if (typeof override[i] == "function")
				prototype[i].methodName = i;
		}
	var subclass = function(obj) {
		this.superapply = function(){superapply.apply(this, arguments)};
		this.superapply.obj = prototype;
		if (obj) {
			for (var i in obj) {
				this[i] = obj[i];
				if (typeof obj[i] == "function")
					this[i].methodName = i;
			}
			this.initialize();
		}
	};
	subclass.prototype = prototype;
	subclass.prototype.constructor = subclass;
	return subclass;
}
var C1 = inherit(Object, {
fn: "C1",
initialize:
	function(){
		alert("C1.initialize");
		this.second(this.fn);
	},
second:
	function(a){
		alert("C1.second: "+a);
	}
});
var C2 = inherit(C1, {
fn: "C2",
initialize:
	function(){
		alert("C2.initialize");
		this.superapply();
//	},
//second:
//	function(a){
//		alert("C2.second: "+a);
//		this.superapply([a]);
	}
});
var C3 = new C2({
fn: "C3",
//initialize:
//	function(){
//		alert("C3.initialize");
//		this.superapply();
//	},
second:
	function(a){
		alert("C3.second: "+a);
		this.superapply([a]);
	}
});
</script>
</head><body>
</body><html>

methodNameなんとかならんもんか。

2007-08-07

http://anond.hatelabo.jp/20070806230537

MacBookThinkPadにはNumLockあるよ。ThinkPadFnをmodifier keyとして使うけど。

あれってテンキーホームポジションともQWERTY配列ホームポジションとも違うから結局使いづらい。

1段ずつ左下にシフトしてJに5を割り当ててる形になれば、多少は使う気になるのに。

2007-08-06

http://anond.hatelabo.jp/20070806230005

俺もテンキー派だなぁ。

ノートはAltやShiftと別のキーで(うちだとFnキー)テンキーと同じ配置で数字が打てるようになるキーが用意されてると思うけど。

結局そのキー押しながらでひと手間かかるけどテンキーに慣れてて打ちにくいって人にはまぁそれなりに使えるようにはなってると思う。

2007-06-21

怠け者へのmochikitノススメ

javascriptライブラリMochiKitというのをご存知だろうか?

私はこのライブラリを採用して非常に開発が楽になったことから諸君にもおすすめをしたいのでサワリだけ紹介したいと思う。

parial 引数をいちいち指定するのが面倒な人用。


配列を受け取り、それぞれを1加算した配列を返す処理を見てみよう

var arr = [1,2,3,4,5];
var v = map(
  function(x){return x+1},
  arr);
v -> [2,3,4,5,6]

となる。

複数回同じ処理を別の配列に適応する場合は

var arr1 = [1,2,3,4,5];
var arr2 = [2,4,6,8,10];
var fx = function(x){return x+1};
var v1 = map(fx,arr1);
var v2 = map(fx,arr2);
v1 -> [2,3,4,5,6]
v2 -> [3,5,7,9,11]

とできる。しかしこれを書くのが面倒な怠惰な人々のためにpartialが用意されている。

var arr = [1,2,3,4,5];
var fx = partial(map,function(x){return x+1});
var v1 = fx(arr1);
var v2 = fx(arr2);
v1 -> [2,3,4,5,6]
v2 -> [3,5,7,9,11]

とできる。partialは関数の第一引数から順に値を指定した関数を作る関数だ。

この場合はmap関数の一つ目の値をfunction(x){return x+1}に指定した関数fxに束縛される。

もう少々一般化して配列を受け取り、それぞれをn加算した配列を返す処理を考えてみよう。

var arr = [1,2,3,4,5];
var n = 10;
var add = function(n,x){return x+n};
var fx = partial(map,partial(add,n));
var v1 = fx(arr);
n = 1;
var v2 = fx(arr);
v1 -> [11,12,13,14,15]
v2 -> [11,12,13,14,15]

ここでv1とv2の値が等しい理由はちょっと考えてもらえば解ると思う。

もちろんaddという名前を考えるのが面倒な人は

var n = 10;
var fx = partial(map,partial(function(n,x){return x+n},n));

と書いても問題ない。

compose function(N){return F(A(N))}と書くのが面倒な人へ

では、配列を受け取り、それぞれを値をn加算したあとm倍した配列を返す処理をみてみよう。

既にn加算する処理は一度出てきているからそれを利用する。

var arr = [1,2,3,4,5];
var n = 10;
var m = 2;
var add = function(n,x){return x+n};
var mul = function(n,x){return x*n};
var addMul = compose(partial(mul,m),partial(add,n));
var fx = partial(map,addMul);
var v = fx(arr);
v -> [22, 24, 26, 28, 30]

compose(f1, f2, ..., fN)はf1(f2(arguments))という評価をする関数をかえす。

つまりaddMul(n)の場合はpartial(mul,m)(partial(add,n)(N))と等価なのだ。

もちろん

var arr = [1,2,3,4,5];
var n = 10;
var m = 2;
var fx = partial(map,
            compose(partial(function(n,x){return x*n},m),
                    partial(function(n,x){return x+n},n)));
var v = fx(arr);

とかいてもよい。ただし名前を考えることの労力と、可読性を天秤にかける必要があるかもしれない。

ちなみに私は addMulを別の場所で使わない限り後者で書くことが多い。

以上のことに興味持った怠惰貴方

http://mochikit.com/

にいってみてはどうだろうか。

http://anond.hatelabo.jp/20070620200618#tbと同じ増田

2007-02-23

おおおおおおお!ほんとうだ

HHK使ってるから全然気付かなかった!ありがとう

Fn+IでPrintScreen押した時に隣も押しちゃったんだろうな

 
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん