OCamlでリストを受け取ったらリストの長さを返す関数を作れた
September 19 12:09, 2025 Posted by tomo
例によって「プログラミングの基礎」サイエンス社刊での問題を解いた。苦し紛れに回答したら当たってた(笑)。再帰の初歩がちょっとできた感じですごくうれしい。ちなみに、パターンマッチの文法が、OCamlはmatch xxx withだが、Elmだとcase xxx ofになる。なんか似ていてElmも同時に理解できそうな気がする。あー、なんかコードサンプルの行頭が左に寄ってしまうので、ActionTextのエディターを導入しないとだな。
(* 目的: 整数のリストを受け取ったらリストの長さを返す *)
(* length : int list -> int *)
let rec length lst = match lst with
[] -> 0
| first :: rest -> length rest + 1
(* テスト *)
let test1 = length [] = 0
let test2 = length [2] = 1
let test3 = length [1; 3] = 2
let test4 = length [1; 3; 5; 7] = 4
let test5 = length [2; 5; 1; 6; 7; 4] = 6
let test6 = length [3; 7; 2] = 3
Comments: Disabled
フロントエンド言語の選択肢を考えるとElmかReScriptになりそうだ
September 07 01:09, 2025 Posted by tomo
私は今、「プログラミングの基礎」という書籍(サイエンス社刊)でOCaml(https://ocaml.org/)という関数型プログラミング言語を使って学習している。元々HTMLから入ってきた人間だが、インタラクティブなフロントエンドにあまり時間を割けないのでラクをしたい。そんな動機で言語探しをしていたところ、OCamlのコードを走らせられるReScript(旧名:ReasonML)に出くわした。これならば、OCamlを学びながら、フロントエンドにも活かすことができ一石二鳥。ReScriptで書いたコードが最終的にはJavaScriptにコンパイルされて動くわけだ。
https://rescript-lang.org/
このページにBuckleScriptとReasonが統合されてReScriptが誕生した経緯が記されている。
https://rescript-lang.org/blog/bucklescript-is-rebranding
こちらのエンジニアさんの意見にも共感した。
https://doitu.info/blog/5e7bf915a669441e9a8bbe54a9b8112bb9fde809
個人開発において自分の進んでいる方向は以下のとおり。
・フロントエンドとバックエンドの言語をなるべくならひとつで済ませたい(ラクしたい)JavaScript + Node.js的な発想。
・フロントエンドに関してあまり時間を割きたくない
懸念点
・ラクしようとして遠回りするんじゃないか?
Elmについては、すでにElm guideなどを読んだことがあるが、自分の希望に近い言語だと思う。なぜならば、覚えることが少ないと紹介されているからだ。Elmのミーティングにも参加したことが一度だけあるが、エンジニアの方がReactを使わないでも済んでいるという実感が伝わったので、やはり実用的な言語なのだと認識した。
Elm、ReScriptを実際に自分の個人開発プロジェクト上で検証して、必要となる機能がはたして実装できるのか、またどちらがラクに使うことができるのか試していきたい。
Comments: Disabled
Railsのフロントエンド関連を勉強している
August 31 01:08, 2025 Posted by tomo
参考書籍
https://pragprog.com/titles/nrclient2/modern-front-end-development-for-rails-second-edition/
以前から興味があったTURBOやStimulusといったHotwire勢、もはや定番となった感じのReactをRailsでどうインストールして使えばいいのかが紹介されている。買ったのは去年だったが、時間ができたので読み始めた。
バックエンドをAPIサーバーだけにしてフロントエンドから読み込むSPAアプリについては、開発工程が複雑化して難しいだろうなと推測する。モノリスにはモノリスなりの少人数でもワンストップで開発できる利点があるので、流行だからといって飛びつかなくてもよいかなと感じる。自分としては、Rails上でAlt JSを運用する方法を勉強したい。やはり一番はフロントエンドをサーバーレンダリングで部分的に差し替えするTurboと控えめなJavaScriptフレームワークのStimulus(https://stimulus.hotwired.dev/)が魅力だな。これらを用いてSPA風のアプリが作成できてしまうのがうれしい。
ちなみに、ビルド方式については当サイトはesbuild(jsbundling)を採用している。これが主流でRailsコミュニティでもおすすめのようだ。というわけで、しばらくローカルでお試しプロジェクトを作成して楽しんでみる。
Comments: Disabled
タグ機能もjsbundlingの復旧に伴い正常に動作するようになった
August 29 08:08, 2025 Posted by tomo
いやぁ、やっと直った。なんせTURBOどころかJavaScriptも読み込めていないとなると明日はないからな。
これで次のタスクに移れるので、うれしい。
Comments: Disabled
やっとローカルのCSSコンパイル機能が直ってPagyのスタイルも当たった
August 28 07:08, 2025 Posted by tomo
そう、Pagy以前からダメだったのです。とりあえずやったこと。
app/javascript/stylesheets/pagy.tailwind.cssを追加。
app/javascript/stylesheets/application.tailwind.cssに、以下を追加。
@import "./pagy.tailwind.css";
app/postcss.config.jsを追加し、以下を追記。
module.exports = {
plugins: {
"@tailwindcss/postcss": {},
autoprefixer: {},
},
};
Dockerfileで、yarnのインストールに失敗していたのを直した。
docker-compose.ymlでnode_modulesをvolumesに設定。
続きはあとで。
Comments: Disabled