Lately I have been busy reading some new books on Domain Driven Design (DDD) and software architecture -- including a short yet eye-opening one in Python and a great one in F#. At the same time, it seems that more people in the Functional Programming world are looking at more formal approaches to modelling -- some examples here. This has brought some thought from the background of my brain about how we should model, organize, and architect software using the lessons we've learnt from functional programming.
Before moving on, let me be clear about this being just a dump of some thoughts, not always well-defined, definite
- Facebookが開発した クエリ言語
- 今はGraphQL Foundationに移管されている
この文章は、 Steve Losh 氏の記事 "A Road to Common Lisp" の翻訳です。
原文はこちらです: http://stevelosh.com/blog/2018/08/a-road-to-common-lisp/
A Road to Common Lisp (Common Lisp への道)
これまで、「最近のCommon Lispをどう学ぶとよいでしょう?」と助言を求めるメールをたくさん受け取ってきました。そこで私は、これまでメールやソーシャルメディアに投稿した全てのアドバイスを書き下すことにしました。これが誰かに有益ならば幸いです。
{:paths ["."] | |
:deps {clansi/clansi {:mvn/version "1.0.0"}}} |
I was talking to a coworker recently about general techniques that almost always form the core of any effort to write very fast, down-to-the-metal hot path code on the JVM, and they pointed out that there really isn't a particularly good place to go for this information. It occurred to me that, really, I had more or less picked up all of it by word of mouth and experience, and there just aren't any good reference sources on the topic. So… here's my word of mouth.
This is by no means a comprehensive gist. It's also important to understand that the techniques that I outline in here are not 100% absolute either. Performance on the JVM is an incredibly complicated subject, and while there are rules that almost always hold true, the "almost" remains very salient. Also, for many or even most applications, there will be other techniques that I'm not mentioning which will have a greater impact. JMH, Java Flight Recorder, and a good profiler are your very best friend! Mea
open Printf | |
(** ペアノ数 **) | |
type nat = Z | S of nat | |
let rec string_of_nat = function | |
| Z -> "Z" | |
| S n -> sprintf "S(%s)" @@ string_of_nat n | |
let rec int_of_nat = function | |
| Z -> 0 |
A list of commonly asked questions, design decisions, reasons why Clojure is the way it is as they were answered directly by Rich (even when from many years ago, those answers are pretty much valid today!). Feel free to point friends and colleagues here next time they ask (again). Answers are pasted verbatim (I've made small adjustments for readibility, but never changed a sentence) from mailing lists, articles, chats.
How to use:
- The link in the table of content jumps at the copy of the answer on this page.
- The link on the answer itself points back at the original post.
- CARTA HOLDINGS(旧VOYAGE GROUP)
- 技術広報が新卒研修<Open AIハッカソン>をスパイしてみた - (2023/04/11)
- @t_wadaに学ぶテスト駆動開発【CARTA 23新卒研修】 - (2023/04/19)
- 【新卒研修】監修者@t_wadaと読む!プログラマが知るべき97のこと読書会 - (2024/04/09)
- Classi
- 当たり前にリリースしていく ~ 新卒研修編 - (2021/05/20)
- リモートワークのための質問力向上研修を実施しました - (2021/12/07)
- CyberZ
- 良いコードとは何か - エンジニア新卒研修 スライド公開 - (2021/04/27)