Help us understand the problem. What is going on with this article?

人間が型だけ書けば実装を意識しないでもよくなる未来

More than 1 year has passed since last update.

型って「どういうことをしてほしいか」っていう 要件 の役割を持ってて、
一方で実装って「どうやってその要件を実現するか」っていう 具体的な手順 の役割を持ってますよね。

ところで仕事ができる人って、「こういうことやりたいな〜って思ってるんだけど〜」って伝えると、
「あ、それなら具体的にこういうやり方をすると良さそうですね〜」って自分で考えて提案して実行してくれてめちゃくちゃ助かるじゃないですか。

そしたら、プログラムの世界でも同じで、要件 (型) だけ書いたら 具体的な手順 (実装) を自動で導出してくれる未来が来たら嬉しい感じがしませんか?

ざんね〜ん! 未来ではなくそれは現代のお話でした〜!:imp: 1

sakura.jpg

type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
        :<|> "books" :> ReqBody Book :> Post '[JSON] Book -- POST /books

myApi :: Proxy MyApi
myApi = Proxy

getAllBooks :: Manager -> BaseUrl -> ExceptT String IO [Book]
postNewBook :: Book -> Manager -> BaseUrl -> ExceptT String IO Book
-- 'client' allows you to produce operations to query an API from a client.
(getAllBooks :<|> postNewBook) = client myApi

Haskell の servant-client は上記のように型を書くだけで、
実際に何かのWeb APIに対してリクエストを投げてその結果をパージングしてくれる関数の実装が自動で生成されます。

もう、「型推論が進化したら人間は型を意識しないでいいようになる」なんてあほなこと言っていい時代じゃないんですね!

sakura2.jpg
さくらちゃんにご飯をあげる


  1. 文脈読めないマウンティングゴリラがウンコ投げてて臭いので補足しとくけど、僕も「人間が実装を完全に書かないでいい未来」なんて来るとは思ってないよ 

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away