Hacker News

Malie mo e ngaahi ola 'o e 'Alisipela – Mei he ngaahi fakatata 'o e me'a va'inga ki he ngaahi fakatata 'o e Hardcaml .

Malie mo e ngaahi ola 'o e 'Alisipela – Mei he ngaahi fakatata 'o e me'a va'inga ki he ngaahi fakatata 'o e Hardcaml . Ko e 'analaiso kakato ko 'eni 'o e algebraic 'oku ne 'omi 'a e sivi fakaikiiki 'o hono ngaahi konga tefito mo e ngaahi 'uhinga lahi ange. Ngaahi Feitu'u Tefito 'o e Tokanga ʻOku fakatefito ʻa e fealēleaʻakí ʻi he: ...

12 min read Via blog.janestreet.com

Mewayz Team

Editorial Team

Hacker News

'Oku 'omi 'e he ngaahi ola 'o e 'Alisipela ha founga malohi, composable ki hono pule'i 'o e ngaahi nunu'a 'i he polokalama ngaue — pea 'i he taimi 'oku faka'aonga'i ai ki he ngaahi fa'unga 'o e simulation 'o e hardware hange ko e Hardcaml, 'oku nau fakaava ha frontier fo'ou ki he modular, tisaini 'o e sēketi 'oku lava ke sivi'i. Pe 'oku ke fakatotolo'i 'a e ngaahi sipinga va'inga 'i he OCaml pe 'a e ngaahi fakatata 'o e RTL 'o e sivi-mafasia 'i he me'afua, 'oku 'omi 'e he ngaahi ola 'o e algebraic 'a e mahino fakafa'unga 'oku fie ma'u 'e he kau 'enisinia fakaonopooni.

Ko e hā ʻa e ngaahi ola ʻo e ʻAlisipēliá pea ko e hā ʻoku nau mahuʻinga ai ki he fakatata ʻo e ngaahi meʻangāué?

Ko e ngaahi ola faka'alisipela ko ha langa fakapolokalama 'oku ne fakamavahe'i 'a e fakaha 'o ha ola fakakomipiuta mei hono faka'uhinga. 'Oku kehe mei he monads, 'a ia 'oku fie ma'u 'a e ngaahi seini 'o e fa'u mahino, 'Oku faka'ata 'e he ngaahi ola 'o e algebraic ke ke faka'uhinga'i 'a e ngaahi ngaue hange ko e mutation 'o e pule'anga, I/O, pe 'ikai-determinism 'i ha feitu'u 'e taha pea tokanga'i kinautolu contextually — 'o 'ai ho'o code ke faingofua ange 'aupito ke fakakaukau ki ai mo toe faka'aonga'i.

'I he tu'unga 'o e Hardcaml — 'a e laipeli tisaini 'o e ngaahi naunau 'oku makatu'unga 'i he OCaml 'a Jane Street — 'oku mahu'inga 'aupito 'eni. 'Oku kau 'i he simulation 'o e hardware 'a e faingata'a layered: ngaahi siakale 'o e uati, fakamafola 'o e faka'ilonga, ngaahi interfaces 'o e manatu, mo e ngaahi sivi 'o e ngaahi me'angaue 'oku nau fakafe'iloaki kotoa 'a e ngaahi nunu'a kovi 'oku pau ke orchestrated fakalelei. 'Oku 'oatu 'e he ngaahi ola 'o e 'alisipela ha founga ma'a ke huhu 'a e 'ulungaanga simulation-pau (hange ko e puke 'o e waveform pe taimi 'o e siakale-totonu) 'o 'ikai ke 'uli'i ho'o tefito'i logic.

"Ko e malohi mo'oni 'o e ngaahi ola 'o e 'alisipela 'oku 'ikai 'i hono fakangata 'o e ngaahi nunu'a kovi — 'oku 'i hono ngaohi kinautolu ke nau kalasi 'uluaki, composable 'a e kau tangata'i fonua 'o e tisaini 'o ho'o polokalama. 'I he taimi 'oku lea ai ho'o simulation framework mo ho'o logic pisinisi 'i he lea tatau, 'oku hoko 'a e faingata'a ke pule'i."

'Oku anga fefe ho'o kamata 'aki 'a e ngaahi ola 'o e 'Alisipela 'i he ngaahi fakatata 'o e OCaml Toy?

Ko e poini hū lelei taha ko e OCaml 5.x, 'a ia na'a ne fakafe'iloaki 'a e poupou fakafonua ki he ngaahi ola 'o fakafou 'i he Ola module. Ko ha sipinga va'inga kalasi 'oku kau ai 'a e fakatata 'o ha counter stateful faingofua 'o 'ikai ha ngaahi fakamo'oni mutable:

'Oku ke faka'uhinga'i ha ola Ma'u ke ma'u mai 'a e tu'unga mo e Seti ke fakafo'ou ia, pea tohi ha handler 'oku ne faka'uhinga'i 'a e ngaahi ola ko 'eni 'o faka'aonga'i ha founga hokohoko-paasi. Ko e me'a 'oku ne 'ai 'eni ke fakamālohi ko e lava ke toe faka'uhinga'i 'a e logic counter tatau 'aki ha tokotaha 'oku ne tokanga'i 'a e 'akau, ko ha tokotaha 'oku ne tokanga'i 'a e fefakatau'aki, pe ko ha tokotaha 'oku ne tokanga'i 'a e simulation-replay — kotoa 'o 'ikai liliu 'a e tefito'i code 'o e counter.

Ko e composability ko 'eni ko e me'a tofu pe ia 'oku ne 'ai 'a e ngaahi ola 'o e 'alisipela ke faka'ofo'ofa ki he ngaahi ngaue 'a e Hardcaml. Ko e puna mei he counter va'inga ki he faile lesisita simulated 'oku conceptually hangatonu: 'oku ke kei fakaha 'a e ngaahi ola mo e toloi 'o e faka'uhinga, 'i he tu'unga RTL pe.

Ko e hā ʻa e fōtunga ʻo ha fakatata Hardcaml moʻoni mo e ngaahi ola ʻo e ʻAlisipela?

'Oku kau 'i he ngaahi fakatata 'o e Hardcaml 'a e ngaahi siakale, ngaahi faka'ai'ai 'o e input, sipinga 'o e output, mo e to'utangata 'o e fotunga 'o e peau. 'I he taimi 'oku ke layer ai 'a e ngaahi ola 'o e 'alisipela ki he paipa ko 'eni, 'oku 'asi mai 'a e ngaahi lelei 'aonga 'e ni'ihi 'i he taimi pe ko ia:

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
  • Ngaahi sivi 'o e decoupled: 'Oku 'ikai fie ma'u ke 'ilo'i 'e ho'o logic 'o e to'utangata stimulus pe 'oku lele ia 'o fakafepaki'i ha sipinga 'o e 'ulungaanga pe ko ha fakatata 'o e levolo 'o e matapa — 'oku fakapapau'i 'e he tokotaha tokanga'i 'o e ola.
  • Puke 'o e fotunga 'o e peau 'oku lava ke fakataha'i: Fakapipiki ha me'a ngaue ki he ola 'o e lekooti 'o e fotunga 'o e peau 'i ha fa'ahinga tu'unga pe 'o e fakatata 'o e fakatata 'o 'ikai ke liliu 'a e faka'ilonga-faka'uli 'o e code.
  • Sivi 'ikai fakapapau'i: Ngaue'aki ha ola ke huhu 'a e ngaahi inputs random pe fuzzed, 'o fetongi 'i he vaha'a 'o e replay fakapapau'i mo e ngaahi founga fakatotolo 'aki hono fetongi 'o e kau to'o.
  • Muimui'i 'o e ma'u'anga tokoni totonu 'o e siakale: Malohi fakatata pe latency ko e ngaahi ola, 'o lava ai ke tanaki atu 'a e fakamatala hili 'a e taimi ki ha fa'ahinga fakatata 'o 'ikai ha refactoring 'ohofi.
  • Tui hala modular: Faka'uhinga'i ha ola 'o e Hala 'a ia, 'i he taimi 'oku tokanga'i ai 'i he founga sivi, 'oku ne maumau'i 'a e ngaahi faka'ilonga ke fakamo'oni'i 'a e logic 'o e hala-fakaakeake — pea 'oku tokanga'i ia ko ha no-op 'i he simulation 'o e ngaohi'anga koloa.

Ko e ola ko ha codebase fakatata 'a ia 'oku fakamavahe'i mo'oni ai 'a e ngaahi hoha'a. 'E lava ke tokanga taha 'a e kau tisaini 'o e hardware ki he totonu 'o e sēketi; 'e lava ke tokanga 'a e kau 'enisinia sivi ki he 'ulungaanga 'o e harness; pea 'oku fetaulaki ma'a 'a e ongo me'a ni 'i he ngata'anga 'o e ola.

'Oku anga fefe hono fakafehoanaki 'o e ngaahi ola 'o e 'Alisipela ki he Monads mo e ngaahi sisitemi ola kehe?

Ko e fakafehoanaki faitotonu: 'oku matu'otu'a ange 'a e monads 'i he ecosystem 'o e Haskell pea 'oku nau 'oatu 'a e ngaahi fakapapau'i 'o e static malohi, ka ko hono fa'u 'o e ngaahi ola monadic lahi (siteiti + hala + I/O) 'oku fie ma'u 'a e ngaahi tu'unga transformer 'e lava ke hoko 'o opaque. 'Oku tokanga'i 'e he ngaahi ola 'o e 'Alisipela 'a e fa'u 'o e ngaahi ola lahi 'i he founga fakafonua — 'oku ke fakaha pe 'a e ngaahi ola lahi pea tohi ha handler 'oku ne ngaue'aki 'a e taha takitaha, 'o 'ikai ha nesting.

Ki he Hardcaml tautautefito, 'a ia 'oku nofo 'i he OCaml kae 'ikai ko e Haskell, ko e ngaahi ola 'o e 'alisipela ko e fili fakaonopooni idiomatic. 'Oku fakalelei'i 'a e taimi lele 'o e OCaml 5 ki he kau tokanga'i 'o e ola mo e si'isi'i taha 'o e 'olunga, pea 'oku mape 'a e hokohoko 'o e sipinga 'o fakanatula ki he sipinga 'o e fakahoko 'o e siakale-ki-siakale 'o e RTL simulation. 'I hono fakafehoanaki ki he ngaahi founga 'oku makatu'unga 'i he callback pe threading 'o e pule'anga mahino, 'oku hehema 'a e ngaahi fakatata 'o e Hardcaml 'oku makatu'unga 'i he ola ke mahu'inga ange 'a e lau mo e tauhi 'i he fua.

'E lava fēfē ke Faka'aonga'i 'e he Ngaahi Pisinisi 'a e Fakakaukau Fakahokohoko mei he Ngaahi Uesia 'o e 'Alisipela ki he Pule'i 'o e Ngaahi Ngaue?

Ko e sipinga faka'atamai 'i mui 'i he ngaahi ola 'o e algebraic — mavahe 'a e fakaha mei he faka'uhinga, fa'u ma'a, swap implementations 'o 'ikai maumau'i 'a e ngaahi aleapau — 'oku mo'oni 'a e faka'aonga'i 'i he tafa'aki 'o e code. Ko e ngaahi sisitemi pisinisi ola lelei taha 'i mamani 'oku langa ia 'i he tefito'i mo'oni tatau: fakamatala'i ho'o ngaahi founga ngaue tu'o taha, fakafe'unga'i 'enau fakahoko ki he tu'unga.

Ko e filosofia tonu 'eni 'i mui 'i he Mewayz, ko ha sisitemi ngaue pisinisi 'oku 207-module 'oku falala ki ai 'a e kau faka'aonga'i 'oku laka hake he 138,000. Mewayz fakamavahe'i 'a e logic pisinisi (ho'o workflows, funnels, ngaahi ako, ngaahi komiuniti, mo e ngaahi falekoloa) mei he ngaahi langa fakalakalaka 'o e ngaue — koe'uhi ke ke lava 'o fa'u 'a e ngaahi modules 'oku ke fie ma'u 'o 'ikai toe langa mei he kamata'anga 'i he taimi kotoa pe 'oku evolve ai ho'o pisinisi. Kamata 'i he $19/mahina pe, ko e mahino faka'ata 'o e ngaahi ola 'o e 'alisipela 'oku faka'aonga'i ki hono fakalele 'o ha pisinisi mo'oni.

Ngaahi Fehuʻi ʻoku Faʻa ʻEke

'Oku tu'uma'u fe'unga 'a e ngaahi ola 'o e 'alisipela ki hono ngaohi 'o e ngaahi fakatata 'o e Hardcaml?

'Io, mo e ngaahi fakatokanga totonu. 'Oku mateuteu 'a e sisitemi 'o e ola 'o e OCaml 5 ki he ngaohi'anga-mateuteu, pea 'oku hokohoko atu 'a e laipeli Hardcaml ke evolve mo e OCaml 5 'a e fe'unga. Ki he ngaahi fakatata lahi, benchmark ho'o ola handler loloto fakalelei — 'e lava ke fakafe'iloaki 'e he ngaahi tu'unga hokohoko loloto 'a e latency 'i he ngaahi fo'i 'ata fakatata fufuu. Ki he lahi taha 'o e ngaahi ngaue 'o e fakamo'oni RTL, 'oku mama'o ange 'a e ngaahi lelei 'o e ergonomic 'i he 'olunga 'o e marginal.

'Oku ou fie ma'u ha a'usia loloto 'i he OCaml ke faka'aonga'i 'a e ngaahi ola 'o e 'alisipela mo e Hardcaml?

'Oku fe'unga pe 'a e 'ilo OCaml lolotonga. Kapau 'oku mahino kiate koe 'a e ngaahi ngaue 'o e tu'unga ma'olunga ange, modules, mo e ngaahi fakamo'oni hingoa 'o e fa'ahinga tefito, 'e lava ke ke muimui ki he interface 'o e simulation 'o e Hardcaml. 'Oku tanaki atu 'e he ngaahi ola 'o e 'alisipela ha la'i 'o e abstraction, ka ko e ngaahi tohi OCaml ki he Uesia module 'oku tohi lelei, pea ko e ngaahi sipinga va'inga 'i he komiuniti ko e ngaahi makatu'unga lelei 'aupito kimu'a pea toki tau'i 'a e ngaahi ha'i fakatata kakato.

Ko e hā ʻa e founga lelei taha ke debug ʻaki ʻa e ngaahi fetuʻutaki ʻa e handler ʻo e ola ʻi he ngaahi fakatātā faingataʻa?

Log 'i he ngaahi ngata'anga 'o e handler. Koe'uhi ko e ngaahi ola 'o e algebraic 'oku ne 'ai ke mahino 'a e "seams" 'o ho'o polokalama — 'a e ngaahi poini 'oku 'ohake ai 'a e ngaahi ola mo tokanga'i — 'oku 'oatu 'e hono fakahu 'o e logging 'i he ngaahi ngata'anga ko ia ha faka'ilonga ma'a 'o e tafe 'a e pule 'o ho'o simulation. Ko e ngaahi me'angaue hange ko e ppx_jane mo e Hardcaml 'oku langa 'i he waveform viewer 'oku ne fakakakato 'a e founga ko 'eni 'aki hono 'ai ke 'asi 'a e tu'unga faka'ilonga 'i he tafa'aki 'o ho'o muimui'i 'o e ola, 'o fakavave'i fakaofo 'a e 'analaiso 'o e aka-tupu'anga.

Mateuteu ke 'omi 'a e fakakaukau composable, modular tatau ki ho'o ngaahi ngaue fakapisinisi? Mewayz 'oku ne 'oatu 'a e ngaahi module fakatahataha'i 'e 207 — mei he e-commerce mo e ngaahi tu'unga 'o e ako ki he CRM mo e ngaahi me'angaue 'a e komiuniti — kotoa 'i he lalo 'ato 'e taha, kamata 'i he $19/mahina. Kau fakataha mo e kau faka'aonga'i 'o e 138,000+ kuo nau 'osi fakafaingofua'i 'enau pisinisi 'o e 'atakai. Kamata langa 'atamai lelei ange 'i he app.mewayz.com.

'Oku tu'uma'u fe'unga 'a e ngaahi ola 'o e 'alisipela ki hono ngaohi 'o e Hardcaml simulations?","talitali":{"@fa'ahinga":"Tali","tohi":"'Io, mo e ngaahi fakatokanga totonu 'oku mateuteu 'a e sisitemi 'o e ola 'o e OCaml 5, pea 'oku hokohoko atu 'a e laipeli 'o e Hardcaml ke evolve mo e OCaml 5 'a e fe'unga mo e ngaahi simulations lahi-benmarkreu2. 'e lava ke fakafe'iloaki 'e he ngaahi tu'unga hokohoko loloto 'a e latency 'i he ngaahi fo'i 'akau 'o e simulation fufuu Ki he lahi taha 'o e ngaahi ngaue 'o e fakamo'oni RTL, 'oku mahulu hake 'a e ngaahi lelei 'o e ergonomic 'i he 'olunga 'o e marginal."}},{"@type":"Fehu'i","hingoa":"'Oku ou fie ma'u 'a e a'usia loloto 'o e OCaml ke faka'aonga'i 'a e ngaahi ola 'o e algebraic mo e. Hardcaml?","talitali":{"@fa'ahinga":"Tali","tohi":"'Oku fe'unga 'a e 'ilo OCaml 'i he vaha'a taimi. Kapau 'oku mahino kiate koe 'a e ngaahi ngaue 'o e tu'unga ma'olunga ange, ngaahi modules, mo e ngaahi fakamo'oni hingoa 'o e fa'ahinga tefito, 'e lava ke ke muimui 'i he Hardcaml 'a e module 'o e simulation 'o e ad. 'oku tohi lelei, pea ko e ngaahi sipinga va'inga 'i he komiuniti ko e ngaahi makatu'unga lelei 'aupito kimu'a pea toki tau'i 'a e ngaahi 'uhila fakatata kakato." Koe'uhi ko e ngaahi ola 'o e 'alisipela 'oku ne 'ai 'a e \"ngaahi tuitui\" 'o ho'o polokalama ke mahino \u2014 'a e ngaahi poini 'oku 'ohake ai 'a e ngaahi ola mo tokanga'i \u2014 fakahu 'a e logging 'i he ngaahi ngata'anga ko ia 'oku ne 'oatu kiate koe ha faka'ilonga ma'a 'o e tafe 'a e pule'i 'o ho'o simulation Ngaahi me'angaue hange ko e ppx_jane 'a e pule'anga 'o e founga 'o e Hardca-lm 'e he founga ko 'eni. 'oku 'asi 'i he tafa'aki 'o ho'o faka'ilonga 'o e ola, dramati"}}]}

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime