Try F#のような環境もあるとはいえ, 情報の少なさもあって必ずしも中高生向けにF#を勧めにくい状況はありますが, 自分自身が気持ちよく取り組める言語として現状ではF#を選んでいます.
Haskellと違って雑なprintf
デバッグもやりやすく, 型が強い割にはスクリプト言語のような書き心地で気持ちよく書けます.
AtCoder上でもいわゆる関数型言語はいくつかあります. 全ての言語と特徴が把握できていないものの, 少なくともClojureはあります. ただAtCoderのClojureは異様に遅いです. ちなみにAtCoder上の実行時間としてはF#は大して速くなく, 同種のコードでOCamlやHaskellの数倍から数十倍の時間がかかる場合はよくあります. ただし少なくともAtCoder上で他の言語と直接比較しても大したご利益はなく, コンパイル型の言語なら速度はほぼ問題ないというコメントもあります. そもそもF#を選んだ時点で一定程度最速を求めるのは放棄しているため, 他の言語との比較の意味での速度は必要以上に気にしません. ただし, もちろんF#プログラムとしての速度や効率はできる限り注意します.
F#のよいところの宣伝といえばcannorinさんの記事が有名です.
他のよい点として, Haskellよりは遥かに命令型的に書きやすい点があります. C#を書いた経験がほぼないためひどくいい加減な感想ではあるものの, (おそらく)型まわりの指定がほぼないC#のようにも書けます. 特にCやPythonで書かれたアルゴリズムを直移植しやすい利点があります. 実際, 私自身も解答が思いつかずF#の解答提出がなかったり, 理解しにくいコードだった場合はPythonなど他の言語からコードを直移植してから書き直す場合があります. これらは人口が多いためサンプルコードも多く, 自分にとって読みやすいコードを見繕いやすくて便利です.
F#人口は少ないもののHaskellerは一定数いるため, Haskellから移植する場合もあります. さらに関数型で書くと逆にわかりにくくなる場合もあります. Haskellだとモナドの面倒なプログラムを書かないといけない場面でも, F#なら命令型的なコードが簡単に書けるのもよい所です.
F#が使えるからです. AOJ, Aizu Online JudgeはHaskell・OCamlはあってもF#がなく, アルゴ式もHaskellはありますがF#がありません. 私はデータ構造とアルゴリズムマニアというわけでもなく, そこまで調査に時間を使いたいわけでもないため, 手軽かつ有名で人口も多く日本語が使えて中高生にも勧めやすいとなるとAtCoderに利点があるように思います.
AOJにはアルゴリズムだけではなくデータ構造などに関しても教育用コンテンツ群があります. アルゴ式はもとから教育用サービスです. これらで使える言語ならこの二サービスもお勧めです.
曖昧に次の基準を採用して進めます.
何らかの手段でデータ構造やアルゴリズムの基本的な勉強はしているとして, ここでは実際の問題を解く場合のポイントを書きます. 一般的なプログラミング学習と同じく, 他人の書いたコードを読むのはとても勉強になります. 大事な点を箇条書きにします.