Hacker News

GenericClosure بىلەن Trampolining Nix

باھا

1 min read Via blog.kleisli.io

Mewayz Team

Editorial Team

Hacker News

قايتا قوزغىلىش كۈچى: قاتلىما چوڭقۇرلۇقتىن ئۈنۈملۈك ئېگىزلىك

ئىقتىدارلىق پروگرامما تۈزۈش دۇنياسىدا ، بولۇپمۇ Nix ئېكولوگىيىلىك سىستېمىسى ئىچىدە ، تەكرارلىنىش بىر ئاساسىي قۇرۇلۇش. ئۇ قانداق قىلىپ مۇرەككەپ سانلىق مەلۇمات قۇرۇلمىسىنى بېسىپ ئۆتۈپ ، بېقىنىشنى ھېسابلاپ ، مۇرەككەپ تۇغۇندىلارنى بەرپا قىلىمىز. قانداقلا بولمىسۇن ، بۇ كۈچ كلاسسىك توزاق بىلەن كېلىدۇ: چوڭقۇر قايتا-قايتا تەكرارلىنىش دۆۋىلەپ ئېقىشنى كەلتۈرۈپ چىقىرىدۇ ، سىزنىڭ قۇرۇلۇش ۋە باھاسىڭىزنى قالايمىقان توختىتىدۇ. ئەنئەنە بويىچە ، پروگراممېرلار تەكرارلاش ئىقتىدارى چاقىرىشنى تەكرار ئايلانما ئايلانمىغا ئايلاندۇرۇش ئۈچۈن تىرامپولىن دەپ ئاتىلىدىغان تېخنىكىغا ئېرىشىپ ، دۆۋىلەپ قويۇشتىن ساقلىنىشى مۇمكىن. ئەمما بۇنى بىر تەرەپ قىلىش ئۈچۈن تېخىمۇ يەرلىك ، Nix مەركەزلىك ئۇسۇل بولغان بولسا قانداق بولار؟ «Lib.customisation.genericClosure» نى كىرگۈزۈڭ ، Nixpkgs ئۆلچەملىك كۇتۇپخانىسىدىكى كۈچلۈك ئىقتىدار ، ئۇ قايتا-قايتا سانلىق مەلۇمات بىر تەرەپ قىلىشنى بىر تەرەپ قىلىش قۇرۇلمىلىق ، ئۈنۈملۈك ئۇسۇل بىلەن تەمىنلەيدۇ.

Nix

دىكى تەكرارلىنىش مەسىلىسىنى چۈشىنىش

ئۇنىڭ يادروسى ، تەكرارلىنىش ئىقتىدارى ئاساسىي شەرتكە يەتمىگۈچە ئۆزگەرتىلگەن تالاش-تارتىشلار بىلەن ئۆزىنى چاقىرىدۇ. ھەر بىر تېلېفون پروگراممىنىڭ چاقىرىش قىسمىنىڭ بىر قىسمىنى ئىستېمال قىلىدۇ. بىر ئىقتىدار ئۆزىنى نەچچە مىڭ قېتىم چاقىرغاندا ، مەسىلەن ، ئىنتايىن چوڭقۇر تايىنىش دەرىخىنى بېسىپ ئۆتكەندە ، دۆۋىلەپ تۈگەپ ، بىر دۆۋە ئېقىپ كېتىش خاتالىقىنى كەلتۈرۈپ چىقىرىدۇ. Nix دا ، مۇرەككەپ سەپلىمە ياكى مودۇل سىستېمىسىنى باھالىغاندا بۇ تېخىمۇ مۇھىم. تىرامپنىڭ ئۈنۈملۈك ھەل قىلىش چارىسى بار (بۇ يەردە فۇنكسىيە بىۋاسىتە قايتىلاشنىڭ ئورنىغا ، بىر فۇنكسىيەنى قايتۇرىدۇ) ، بۇ بىر خىل ئىش بولۇپ قالغاندەك ھېس قىلىدۇ. ئۇ لوگىكىڭىزنى مۇئەييەن ئەندىزە بىلەن ئوراشنى تەلەپ قىلىدۇ ، بۇ كودنىڭ مۇددىئاسىنى ئېنىقلىيالايدۇ. Nix جەمئىيىتى بۇ خىل ئەھۋاللارغا نىسبەتەن تېخىمۇ ئۆزگىچە قورالنى ياساپ چىقتى.

سىزگە قانداق قىلىپ ئومۇمىيۈزلۈك تاقاش ترامپولىنلىرى

"nixpkgs / lib" دىكى "genericClosure" ئىقتىدارى باشلىنىش ۋە ئىزباسارلارنى ھېسابلايدىغان ئىقتىدارغا ئاساسەن تۈرلەرنى تاقاش ئۈچۈن لايىھەلەنگەن. ئۇنىڭ ئىمزاسى سىزدىن «باشلاش» تۈرلىرىنىڭ دەسلەپكى تىزىملىكى ۋە «تىجارەتچى» ئىقتىدارىنى تەمىنلىشىڭىزنى تەلەپ قىلىدۇ. سېھىرگەرلىك ئۇنىڭ قانداق مەشغۇلات قىلىدىغانلىقىدا: `genericClosure` ئىچكى قىسىمدا بىر تەرەپ قىلىدىغان تۈرلەرنى باشقۇرىدۇ. ئۇ ۋارىسلىق قىلغۇچىلارنى بارلىققا كەلتۈرۈش ئۈچۈن ئۆچىرەتتىكى ھەر بىر تۈرگە مەشغۇلات ئىقتىدارىنى قايتا-قايتا قوللىنىدۇ ، ئەگەر ئىلگىرى كۆرمىگەن بولسا ئۇلارنى ئۆچرەتكە قوشىدۇ. ھېچقانداق يېڭى مەھسۇلات ئىشلەپچىقىرىلمىغۇچە بۇ جەريان داۋاملىشىدۇ. مۇھىمى ، بۇ تەكرارلىنىش جەريانى ئەمەس ، تەكرارلىنىش جەريانى. ئۇ پۈتكۈل ئۆتكەلنى ئايدىڭلاشتۇرىدۇ ، چاقىرىشقا تايانماي ، دۆۋە تەقسىملەنگەن سانلىق مەلۇمات قۇرۇلمىسى (ئۆچىرەت ۋە بىر يۈرۈش زىيارەت قىلىنغان بۇيۇملار) دىكى ھالەتنى باشقۇرىدۇ.

  • باشلاش: سىز تاقىلىدىغان دەسلەپكى تۈرلەرنىڭ تىزىملىكىنى تەمىنلەيسىز.
  • مەشغۇلات ئىقتىدارى: بۇ ئىقتىدار بىرلا تۈرنى ئېلىپ ، ئۇنىڭ بىۋاسىتە ئىزباسارلىرى ياكى بېقىنىشلىرىنىڭ تىزىملىكىنى قايتۇرىدۇ.
  • ئاپتوماتىك كۆپەيتىش: `genericClosure` قايسى تۈرلەرنىڭ بىر تەرەپ قىلىنغانلىقىنى ئاپتوماتىك ئىز قوغلاپ ، چەكسىز ھالقىلار ۋە ئارتۇقچە خىزمەتلەرنىڭ ئالدىنى ئالىدۇ.
  • ئېنىقلاش تەرتىپى: ئۇ تۈرلەرنى كەڭ دائىرىدە بىر تەرەپ قىلىدۇ ، تايىنىشچان گرافىكلارنى بىر تەرەپ قىلغاندا ھەمىشە كۆڭۈلدىكىدەك بولىدۇ.

ئەمەلىي مىسال: تايىنىشنى تاقاش

ئۆزىڭىزنىڭ Mewayz مودۇللۇق سودا OS ئىچىدىكى يۇمشاق دېتال زاپچاسلىرىنى ئېنىقلاۋاتقانلىقىڭىزنى تەسەۋۋۇر قىلىپ بېقىڭ. بۇ تەركىبنىڭ بېقىنىشچانلىقى بار ، بۇ بېقىنىشلارنىڭ ئۆزىگە تايىنىشچانلىقى بار. "GenericClosure" نى ئىشلىتىپ ، تەلەپ قىلىنغان زاپچاسلارنىڭ تولۇقلىقىنى نەپىس ھېسابلىيالايسىز.

مودېللىق ھەممىدىن مۇھىم بولغان مېۋايزدا ، ئورۇنلاشتۇرۇش ۋە كۆپەيتىشتە سودا جەريانىنىڭ تولۇق بېقىنىش گرافىكىنى چۈشىنىش ئىنتايىن مۇھىم. `genericClosure` بۇ گرافىكنى ئۈنۈملۈك ھېسابلاش ئۈچۈن ھەل قىلغۇچ ماتور بىلەن تەمىنلەيدۇ.

بۇ يەردە ئاددىيلاشتۇرۇلغان Nix ئىپادىسى بار:

{lib}:
قويايلى
  # ئىسىم ۋە بېقىنىشچانلىقى بار تەركىبنىڭ ئاددىي ئىپادىلىنىشى.
  mkComp = name: deps: {key = name; مىراسقا ۋارىسلىق قىلىش };

  # كىچىك زاپچاس گرافىكىنى ئېنىقلاڭ.
  componentA = mkComp "A" [];
  componentB = mkComp "B" [];
  coreModule = mkComp "Core" [componentA componentB];
  appModule = mkComp "App" [coreModule];

  # GenericClosure نىڭ مەشغۇلات ئىقتىدارى.
  # ئۇ بىر زاپچاسنى ئېلىپ ، بىۋاسىتە بېقىنىشچانلىقىنى قايتۇرىدۇ.
  getDeps = تۈر: خەرىتە (dep: {key = dep.key;}) item.deps;

  # AppModule دىن باشلاپ تولۇق تاقاشنى قۇرۇپ چىقىڭ.
  fullClosure = lib.customisation.genericClosure {
    startSet = [{key = appModule.key; }];
    operator = getDeps;
  };
in
  fullClosure

بۇ كود «App» ، «Core» ، «A» ۋە «B» تەركىبلىرىنى ئۆز ئىچىگە ئالغان تىزىملىك ھاسىل قىلىدۇ. «GenericClosure» ئىقتىدارى «App» دىن باشلانغان ، «GetDeps» نى ئىشلىتىپ ئۆزىنىڭ بېقىنىشچانلىقىنى تاپقان («Core») ، ئاندىن «Core» نى بىر تەرەپ قىلىپ «A» ۋە «B» نى تاپقان ، ئاخىرىدا «A» ۋە «B» نى بىر تەرەپ قىلغان ، نەتىجىدە بارلىق لازىملىق تەركىبلەرنىڭ تولۇق ، تەكشى تىزىملىكى بارلىققا كەلگەن.

💡 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 →

مۇستەھكەم سىستېمىلار ئۈچۈن Idiomatic Nix نى قوبۇل قىلىش

`genericClosure 'نى ئىشلىتىش ئارقىلىق ، ئېلاننى قايتا تەكرارلاش ۋە قولدا بېسىشتىن مەلۇم قىلىش ، پۇختا ۋە سىناقتىن ئۆتكەن ئۈلگە ھالەتكە ئۆتىسىز. ئۇ سىزنىڭ كودىڭىزنى تېخىمۇ ئوقۇشچان ۋە خاتالىق كۆپ يۈز بېرىدۇ ، بولۇپمۇ مۇرەككەپ ، ئۇۋىغان سانلىق مەلۇماتلارنى بىر تەرەپ قىلغاندا. Mewayz غا ئوخشاش سۇپىلارغا نىسبەتەن ، Nix نىڭ ئىشەنچلىكلىكى ۋە كۆپىيىشچانلىقى پرىنسىپى ئۈستىگە قۇرۇلغان ، بۇ خىل ئۆزگىچە قۇرۇلۇشلارنى ئىشلىتىش ئاچقۇچ. ئۇ مودۇللارنى توپلاشنىڭ يادرولۇق لوگىكىسى ۋە ئۇلارنىڭ بېقىنىشچانلىقى ئۈنۈملۈك ۋە كېڭەيتىشكە كاپالەتلىك قىلىپ ، چوڭقۇر قايتىلىنىشتىن كېلىپ چىقىدىغان باھالاش خاتالىقلىرىنىڭ ئالدىنى ئېلىپ ، سىستېمىنىڭ ئومۇمىي مۇقىملىقىغا تۆھپە قوشىدۇ. كېيىنكى قېتىم Nix دا چوڭقۇر قايتىلىنىش ئىقتىدارىنى يازماقچى بولغاندا ، «genericClosure» نىڭ پاكىز ھەل قىلىش چارىسى ئۈچۈن ترامپولىن بىلەن تەمىنلىيەلەمدۇ يوق ئويلاڭ.

دائىم سورايدىغان سوئاللار

قايتا قوزغىلىش كۈچى: قاتلىما چوڭقۇرلۇقتىن ئۈنۈملۈك ئېگىزلىك

ئىقتىدارلىق پروگرامما تۈزۈش دۇنياسىدا ، بولۇپمۇ Nix ئېكولوگىيىلىك سىستېمىسى ئىچىدە ، تەكرارلىنىش بىر ئاساسىي قۇرۇلۇش. ئۇ قانداق قىلىپ مۇرەككەپ سانلىق مەلۇمات قۇرۇلمىسىنى بېسىپ ئۆتۈپ ، بېقىنىشنى ھېسابلاپ ، مۇرەككەپ تۇغۇندىلارنى بەرپا قىلىمىز. قانداقلا بولمىسۇن ، بۇ كۈچ كلاسسىك توزاق بىلەن كېلىدۇ: چوڭقۇر قايتا-قايتا تەكرارلىنىش دۆۋىلەپ ئېقىشنى كەلتۈرۈپ چىقىرىدۇ ، سىزنىڭ قۇرۇلۇش ۋە باھاسىڭىزنى قالايمىقان توختىتىدۇ. ئەنئەنە بويىچە ، پروگراممېرلار تەكرارلاش ئىقتىدارى چاقىرىشنى تەكرار ئايلانما ئايلانمىغا ئايلاندۇرۇش ئۈچۈن تىرامپولىن دەپ ئاتىلىدىغان تېخنىكىغا ئېرىشىپ ، دۆۋىلەپ قويۇشتىن ساقلىنىشى مۇمكىن. ئەمما بۇنى بىر تەرەپ قىلىش ئۈچۈن تېخىمۇ يەرلىك ، Nix مەركەزلىك ئۇسۇل بولغان بولسا قانداق بولار؟ «Lib.customisation.genericClosure» نى كىرگۈزۈڭ ، Nixpkgs ئۆلچەملىك كۇتۇپخانىسىدىكى كۈچلۈك ئىقتىدار ، ئۇ قايتا-قايتا سانلىق مەلۇمات بىر تەرەپ قىلىشنى بىر تەرەپ قىلىش قۇرۇلمىلىق ، ئۈنۈملۈك ئۇسۇل بىلەن تەمىنلەيدۇ.

Nix

دىكى تەكرارلىنىش مەسىلىسىنى چۈشىنىش

ئۇنىڭ يادروسى ، تەكرارلىنىش ئىقتىدارى ئاساسىي شەرتكە يەتمىگۈچە ئۆزگەرتىلگەن تالاش-تارتىشلار بىلەن ئۆزىنى چاقىرىدۇ. ھەر بىر تېلېفون پروگراممىنىڭ چاقىرىش قىسمىنىڭ بىر قىسمىنى ئىستېمال قىلىدۇ. بىر ئىقتىدار ئۆزىنى نەچچە مىڭ قېتىم چاقىرغاندا ، مەسىلەن ، ئىنتايىن چوڭقۇر تايىنىش دەرىخىنى بېسىپ ئۆتكەندە ، دۆۋىلەپ تۈگەپ ، بىر دۆۋە ئېقىپ كېتىش خاتالىقىنى كەلتۈرۈپ چىقىرىدۇ. Nix دا ، مۇرەككەپ سەپلىمە ياكى مودۇل سىستېمىسىنى باھالىغاندا بۇ تېخىمۇ مۇھىم. تىرامپنىڭ ئۈنۈملۈك ھەل قىلىش چارىسى بار (بۇ يەردە فۇنكسىيە بىۋاسىتە قايتىلاشنىڭ ئورنىغا ، بىر فۇنكسىيەنى قايتۇرىدۇ) ، بۇ بىر خىل ئىش بولۇپ قالغاندەك ھېس قىلىدۇ. ئۇ لوگىكىڭىزنى مۇئەييەن ئەندىزە بىلەن ئوراشنى تەلەپ قىلىدۇ ، بۇ كودنىڭ مۇددىئاسىنى ئېنىقلىيالايدۇ. Nix جەمئىيىتى بۇ خىل ئەھۋاللارغا نىسبەتەن تېخىمۇ ئۆزگىچە قورالنى ياساپ چىقتى.

سىز ئۈچۈن قانداق قىلىپ ئومۇمىيۈزلۈك تاقاش ترامپولىن

"nixpkgs / lib" دىكى "genericClosure" ئىقتىدارى باشلىنىش ۋە ئىزباسارلارنى ھېسابلايدىغان ئىقتىدارغا ئاساسەن تۈرلەرنى تاقاش ئۈچۈن لايىھەلەنگەن. ئۇنىڭ ئىمزاسى سىزدىن «باشلاش» تۈرلىرىنىڭ دەسلەپكى تىزىملىكى ۋە «تىجارەتچى» ئىقتىدارىنى تەمىنلىشىڭىزنى تەلەپ قىلىدۇ. سېھىرگەرلىك ئۇنىڭ قانداق مەشغۇلات قىلىدىغانلىقىدا: `genericClosure` ئىچكى قىسىمدا بىر تەرەپ قىلىدىغان تۈرلەرنى باشقۇرىدۇ. ئۇ ۋارىسلىق قىلغۇچىلارنى بارلىققا كەلتۈرۈش ئۈچۈن ئۆچىرەتتىكى ھەر بىر تۈرگە مەشغۇلات ئىقتىدارىنى قايتا-قايتا قوللىنىدۇ ، ئەگەر ئىلگىرى كۆرمىگەن بولسا ئۇلارنى ئۆچرەتكە قوشىدۇ. ھېچقانداق يېڭى مەھسۇلات ئىشلەپچىقىرىلمىغۇچە بۇ جەريان داۋاملىشىدۇ. مۇھىمى ، بۇ تەكرارلىنىش جەريانى ئەمەس ، تەكرارلىنىش جەريانى. ئۇ پۈتكۈل ئۆتكەلنى ئايدىڭلاشتۇرىدۇ ، چاقىرىشقا تايانماي ، دۆۋە تەقسىملەنگەن سانلىق مەلۇمات قۇرۇلمىسى (ئۆچىرەت ۋە بىر يۈرۈش زىيارەت قىلىنغان بۇيۇملار) دىكى ھالەتنى باشقۇرىدۇ.

ئەمەلىي مىسال: تايىنىشنى تاقاش

ئۆزىڭىزنىڭ Mewayz مودۇللۇق سودا OS ئىچىدىكى يۇمشاق دېتال زاپچاسلىرىنى ئېنىقلاۋاتقانلىقىڭىزنى تەسەۋۋۇر قىلىپ بېقىڭ. بۇ تەركىبنىڭ بېقىنىشچانلىقى بار ، بۇ بېقىنىشلارنىڭ ئۆزىگە تايىنىشچانلىقى بار. "GenericClosure" نى ئىشلىتىپ ، تەلەپ قىلىنغان زاپچاسلارنىڭ تولۇقلىقىنى نەپىس ھېسابلىيالايسىز.

مۇستەھكەم سىستېمىلار ئۈچۈن Idiomatic Nix نى قوبۇل قىلىش

`genericClosure 'نى ئىشلىتىش ئارقىلىق ، ئېلاننى قايتا تەكرارلاش ۋە قولدا بېسىشتىن مەلۇم قىلىش ، پۇختا ۋە سىناقتىن ئۆتكەن ئۈلگە ھالەتكە ئۆتىسىز. ئۇ سىزنىڭ كودىڭىزنى تېخىمۇ ئوقۇشچان ۋە خاتالىق كۆپ يۈز بېرىدۇ ، بولۇپمۇ مۇرەككەپ ، ئۇۋىغان سانلىق مەلۇماتلارنى بىر تەرەپ قىلغاندا. Mewayz غا ئوخشاش سۇپىلارغا نىسبەتەن ، Nix نىڭ ئىشەنچلىكلىكى ۋە كۆپىيىشچانلىقى پرىنسىپى ئۈستىگە قۇرۇلغان ، بۇ خىل ئۆزگىچە قۇرۇلۇشلارنى ئىشلىتىش ئاچقۇچ. ئۇ مودۇللارنى توپلاشنىڭ يادرولۇق لوگىكىسى ۋە ئۇلارنىڭ بېقىنىشچانلىقى ئۈنۈملۈك ۋە كېڭەيتىشكە كاپالەتلىك قىلىپ ، چوڭقۇر قايتىلىنىشتىن كېلىپ چىقىدىغان باھالاش خاتالىقلىرىنىڭ ئالدىنى ئېلىپ ، سىستېمىنىڭ ئومۇمىي مۇقىملىقىغا تۆھپە قوشىدۇ. كېيىنكى قېتىم Nix دا چوڭقۇر قايتىلىنىش ئىقتىدارىنى يازماقچى بولغاندا ، «genericClosure» نىڭ پاكىز ھەل قىلىش چارىسى ئۈچۈن ترامپولىن بىلەن تەمىنلىيەلەمدۇ يوق ئويلاڭ.

Mewayz بىلەن سودىڭىزنى راۋانلاشتۇرۇڭ

Mewayz 208 سودا مودۇلىنى بىر سۇپىغا ئېلىپ كىرىدۇ - CRM ، تالون ، تۈر باشقۇرۇش ۋە باشقىلار. خىزمەت ئېقىمىنى ئاددىيلاشتۇرغان 138,000+ ئىشلەتكۈچىگە قوشۇلۇڭ.

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