[{"data":1,"prerenderedAt":711},["ShallowReactive",2],{"navigation_docs":3,"-advance-generic-type":198,"-advance-generic-type-surround":707},[4,30,81,118,147,171,184],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"/getting-started","1.getting-started",[10,15,20,25],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","/getting-started/introduction","1.getting-started/2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/getting-started/installation","1.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick start","/getting-started/quickstart","1.getting-started/4.quickstart","i-lucide-code-xml",{"title":26,"path":27,"stem":28,"icon":29},"Troubleshooting","/getting-started/troubleshooting","1.getting-started/5.troubleshooting","i-lucide-wrench",{"title":31,"icon":6,"path":32,"stem":33,"children":34,"page":6},"Core Features","/core-features","2.core-features",[35,39,43,48,52,56,60,64,68,73,77],{"title":36,"path":37,"stem":38,"icon":24},"Main function","/core-features/main-function","2.core-features/1.main-function",{"title":40,"path":41,"stem":42,"icon":24},"Variables","/core-features/variables","2.core-features/2.variables",{"title":44,"path":45,"stem":46,"icon":47},"Comment","/core-features/comment","2.core-features/3.comment","i-lucide-hash",{"title":49,"path":50,"stem":51,"icon":24},"Conditionals","/core-features/conditionals","2.core-features/4.conditionals",{"title":53,"path":54,"stem":55,"icon":24},"Loops","/core-features/loops","2.core-features/5.loops",{"title":57,"path":58,"stem":59,"icon":24},"Functions","/core-features/functions","2.core-features/6.functions",{"title":61,"path":62,"stem":63,"icon":24},"Pointers","/core-features/pointers","2.core-features/7.pointers",{"title":65,"path":66,"stem":67,"icon":24},"Data types","/core-features/datatypes","2.core-features/8.datatypes",{"title":69,"path":70,"stem":71,"icon":72},"Operators","/core-features/operators","2.core-features/9.operators","i-lucide-percent",{"title":74,"path":75,"stem":76,"icon":24},"Literals","/core-features/a.literals","2.core-features/a.literals",{"title":78,"path":79,"stem":80,"icon":24},"Keywords","/core-features/b.keywords","2.core-features/b.keywords",{"title":82,"icon":6,"path":83,"stem":84,"children":85,"page":6},"Features","/features","3.features",[86,90,94,98,102,106,110,114],{"title":87,"path":88,"stem":89,"icon":24},"Const","/features/const","3.features/1.const",{"title":91,"path":92,"stem":93,"icon":24},"Define","/features/define","3.features/2.define",{"title":95,"path":96,"stem":97,"icon":24},"Enum","/features/enum","3.features/3.enum",{"title":99,"path":100,"stem":101,"icon":24},"Union","/features/union","3.features/4.union",{"title":103,"path":104,"stem":105,"icon":24},"Overloading","/features/overloading","3.features/5.overloading",{"title":107,"path":108,"stem":109,"icon":24},"Lambda","/features/lambda","3.features/6.lambda",{"title":111,"path":112,"stem":113,"icon":24},"Callback","/features/callback","3.features/7.callback",{"title":115,"path":116,"stem":117,"icon":24},"Auto","/features/auto","3.features/8.auto",{"title":119,"icon":6,"path":120,"stem":121,"children":122,"page":6},"Advance Features","/advance","4.advance",[123,127,131,135,139,143],{"title":124,"path":125,"stem":126,"icon":24},"Generic Type","/advance/generic-type","4.advance/1.generic-type",{"title":128,"path":129,"stem":130,"icon":24},"Errors","/advance/error","4.advance/2.error",{"title":132,"path":133,"stem":134,"icon":24},"Annotation","/advance/annotation","4.advance/3.annotation",{"title":136,"path":137,"stem":138,"icon":24},"Variadic Function","/advance/variadic-func","4.advance/4.variadic-func",{"title":140,"path":141,"stem":142,"icon":24},"Module","/advance/module-interface","4.advance/5.module-interface",{"title":144,"path":145,"stem":146,"icon":24},"Operator Overloading","/advance/operator-overloading","4.advance/6.operator-overloading",{"title":148,"icon":6,"path":149,"stem":150,"children":151,"page":6},"Struct","/struct","5.struct",[152,155,159,163,167],{"title":148,"path":153,"stem":154,"icon":24},"/struct/struct","5.struct/1.struct",{"title":156,"path":157,"stem":158,"icon":24},"Methods","/struct/methods","5.struct/2.methods",{"title":160,"path":161,"stem":162,"icon":24},"Init/Deinit","/struct/init-deinit","5.struct/3.init-deinit",{"title":164,"path":165,"stem":166,"icon":24},"Encapsulation","/struct/encapsulation","5.struct/4.encapsulation",{"title":168,"path":169,"stem":170,"icon":24},"Static","/struct/static","5.struct/5.static",{"title":172,"icon":6,"path":173,"stem":174,"children":175,"page":6},"Data Structures","/data-structure","6.data-structure",[176,180],{"title":177,"path":178,"stem":179,"icon":24},"Array","/data-structure/array","6.data-structure/array",{"title":181,"path":182,"stem":183,"icon":24},"Structural Type","/data-structure/strutural-type","6.data-structure/strutural-type",{"title":185,"icon":6,"path":186,"stem":187,"children":188,"page":6},"Standard Libraries","/stdlib","7.stdlib",[189,194],{"title":190,"path":191,"stem":192,"icon":193},"stdlib","/stdlib/stdlib","7.stdlib/stdlib","i-lucide-library-big",{"title":195,"path":196,"stem":197,"icon":24},"syscall","/stdlib/syscall","7.stdlib/syscall",{"id":199,"title":124,"body":200,"description":700,"extension":701,"links":702,"meta":703,"navigation":704,"path":125,"seo":705,"stem":126,"__hash__":706},"docs/4.advance/1.generic-type.md",{"type":201,"value":202,"toc":696},"minimark",[203,221,226,394,397,403,409,413,416,421,692],[204,205,206,207,211,212,216,217,220],"p",{},"A ",[208,209,210],"strong",{},"Generic"," is a feature that allows you to write a single blueprint for a struct or function that works with different data types. Because Cambo is a statically typed langauge, the compiler must know the exact data at build time. To achieve this without a runtime penalty, the compiler performs Monomorphization: every time you use the generic code with a specific type (like ",[213,214,215],"code",{},"int"," or ",[213,218,219],{},"string","), the compiler secretly generates a unique, concrete version of that code for that exact type.",[222,223,225],"h2",{"id":224},"generic-function","Generic Function",[227,228,233],"pre",{"className":229,"code":230,"language":231,"meta":232,"style":232},"language-kh shiki shiki-themes material-theme-lighter one-light one-dark-pro","void prinln\u003Ctype T>(T output){\n  print(\"{}\\n\", output);\n}\n\nint main(string args[]){\n  \n  prinln(12);\n  prinln(\"string\");\n\n  return 0;\n}\n","kh","",[213,234,235,274,306,312,319,337,343,357,372,377,389],{"__ignoreMap":232},[236,237,240,244,248,252,255,258,261,265,268,271],"span",{"class":238,"line":239},"line",1,[236,241,243],{"class":242},"sQsOY","void",[236,245,247],{"class":246},"s8dPH"," prinln",[236,249,251],{"class":250},"sB4Xn","\u003C",[236,253,254],{"class":242},"type",[236,256,257],{"class":246}," T",[236,259,260],{"class":250},">",[236,262,264],{"class":263},"sM89C","(",[236,266,267],{"class":246},"T",[236,269,270],{"class":246}," output",[236,272,273],{"class":263},"){\n",[236,275,277,281,283,287,291,295,297,300,303],{"class":238,"line":276},2,[236,278,280],{"class":279},"spnjr","  print",[236,282,264],{"class":263},[236,284,286],{"class":285},"sVH1b","\"",[236,288,290],{"class":289},"spZWa","{}",[236,292,294],{"class":293},"scPpd","\\n",[236,296,286],{"class":285},[236,298,299],{"class":263},", ",[236,301,302],{"class":246},"output",[236,304,305],{"class":263},");\n",[236,307,309],{"class":238,"line":308},3,[236,310,311],{"class":263},"}\n",[236,313,315],{"class":238,"line":314},4,[236,316,318],{"emptyLinePlaceholder":317},true,"\n",[236,320,322,324,327,329,331,334],{"class":238,"line":321},5,[236,323,215],{"class":246},[236,325,326],{"class":279}," main",[236,328,264],{"class":263},[236,330,219],{"class":242},[236,332,333],{"class":246}," args",[236,335,336],{"class":263},"[]){\n",[236,338,340],{"class":238,"line":339},6,[236,341,342],{"class":263},"  \n",[236,344,346,349,351,355],{"class":238,"line":345},7,[236,347,348],{"class":279},"  prinln",[236,350,264],{"class":263},[236,352,354],{"class":353},"sriKn","12",[236,356,305],{"class":263},[236,358,360,362,364,366,368,370],{"class":238,"line":359},8,[236,361,348],{"class":279},[236,363,264],{"class":263},[236,365,286],{"class":285},[236,367,219],{"class":289},[236,369,286],{"class":285},[236,371,305],{"class":263},[236,373,375],{"class":238,"line":374},9,[236,376,318],{"emptyLinePlaceholder":317},[236,378,380,383,386],{"class":238,"line":379},10,[236,381,382],{"class":242},"  return",[236,384,385],{"class":353}," 0",[236,387,388],{"class":263},";\n",[236,390,392],{"class":238,"line":391},11,[236,393,311],{"class":263},[204,395,396],{},"This is similar to writing overloading functions but in dynamic way with a fixed number of parameter.",[204,398,399,400],{},"To create more generic types, you can just do ",[213,401,402],{},"\u003Ctype T1, T2>",[404,405,406,408],"note",{},[213,407,254],{}," is a keyword.",[222,410,412],{"id":411},"generic-struct","Generic Struct",[204,414,415],{},"You can define a generic struct by following the same syntax as you've seen in the generic function.",[204,417,418],{},[208,419,420],{},"Example:",[227,422,424],{"className":229,"code":423,"language":231,"meta":232,"style":232},"struct Box\u003Ctype T>{\n  T _value;\n\n  init Box(T value){\n    self._value = value;\n  }\n\n  void show(){\n    print(\"value: {}\", self.value);\n  }\n\n}\n\nint main(string args[]){\n\n  Box\u003Cint32> box1 = Box\u003Cint32>(10);\n  Box\u003Cfloat32> box2 = Box(12.2); # the second `\u003Cfloat32>` is optional\n \n  box1.show();\n  box2.show();\n\n  return 0;\n}\n",[213,425,426,445,455,459,475,493,498,502,513,539,543,547,552,557,572,577,610,641,647,661,673,678,687],{"__ignoreMap":232},[236,427,428,431,434,436,438,440,442],{"class":238,"line":239},[236,429,430],{"class":242},"struct",[236,432,433],{"class":246}," Box",[236,435,251],{"class":250},[236,437,254],{"class":242},[236,439,257],{"class":246},[236,441,260],{"class":250},[236,443,444],{"class":263},"{\n",[236,446,447,450,453],{"class":238,"line":276},[236,448,449],{"class":246},"  T",[236,451,452],{"class":246}," _value",[236,454,388],{"class":263},[236,456,457],{"class":238,"line":308},[236,458,318],{"emptyLinePlaceholder":317},[236,460,461,464,466,468,470,473],{"class":238,"line":314},[236,462,463],{"class":242},"  init",[236,465,433],{"class":279},[236,467,264],{"class":263},[236,469,267],{"class":246},[236,471,472],{"class":246}," value",[236,474,273],{"class":263},[236,476,477,480,483,486,489,491],{"class":238,"line":321},[236,478,479],{"class":246},"    self",[236,481,482],{"class":263},".",[236,484,485],{"class":246},"_value",[236,487,488],{"class":250}," =",[236,490,472],{"class":246},[236,492,388],{"class":263},[236,494,495],{"class":238,"line":339},[236,496,497],{"class":263},"  }\n",[236,499,500],{"class":238,"line":345},[236,501,318],{"emptyLinePlaceholder":317},[236,503,504,507,510],{"class":238,"line":359},[236,505,506],{"class":242},"  void",[236,508,509],{"class":279}," show",[236,511,512],{"class":263},"(){\n",[236,514,515,518,520,522,525,527,529,532,534,537],{"class":238,"line":374},[236,516,517],{"class":279},"    print",[236,519,264],{"class":263},[236,521,286],{"class":285},[236,523,524],{"class":289},"value: {}",[236,526,286],{"class":285},[236,528,299],{"class":263},[236,530,531],{"class":246},"self",[236,533,482],{"class":263},[236,535,536],{"class":246},"value",[236,538,305],{"class":263},[236,540,541],{"class":238,"line":379},[236,542,497],{"class":263},[236,544,545],{"class":238,"line":391},[236,546,318],{"emptyLinePlaceholder":317},[236,548,550],{"class":238,"line":549},12,[236,551,311],{"class":263},[236,553,555],{"class":238,"line":554},13,[236,556,318],{"emptyLinePlaceholder":317},[236,558,560,562,564,566,568,570],{"class":238,"line":559},14,[236,561,215],{"class":246},[236,563,326],{"class":279},[236,565,264],{"class":263},[236,567,219],{"class":242},[236,569,333],{"class":246},[236,571,336],{"class":263},[236,573,575],{"class":238,"line":574},15,[236,576,318],{"emptyLinePlaceholder":317},[236,578,580,583,585,588,590,593,595,597,599,601,603,605,608],{"class":238,"line":579},16,[236,581,582],{"class":246},"  Box",[236,584,251],{"class":250},[236,586,587],{"class":242},"int32",[236,589,260],{"class":250},[236,591,592],{"class":246}," box1",[236,594,488],{"class":250},[236,596,433],{"class":246},[236,598,251],{"class":250},[236,600,587],{"class":242},[236,602,260],{"class":250},[236,604,264],{"class":263},[236,606,607],{"class":353},"10",[236,609,305],{"class":263},[236,611,613,615,617,620,622,625,627,629,631,634,637],{"class":238,"line":612},17,[236,614,582],{"class":246},[236,616,251],{"class":250},[236,618,619],{"class":242},"float32",[236,621,260],{"class":250},[236,623,624],{"class":246}," box2",[236,626,488],{"class":250},[236,628,433],{"class":279},[236,630,264],{"class":263},[236,632,633],{"class":353},"12.2",[236,635,636],{"class":263},"); ",[236,638,640],{"class":639},"seacL","# the second `\u003Cfloat32>` is optional\n",[236,642,644],{"class":238,"line":643},18,[236,645,646],{"class":263}," \n",[236,648,650,653,655,658],{"class":238,"line":649},19,[236,651,652],{"class":246},"  box1",[236,654,482],{"class":263},[236,656,657],{"class":279},"show",[236,659,660],{"class":263},"();\n",[236,662,664,667,669,671],{"class":238,"line":663},20,[236,665,666],{"class":246},"  box2",[236,668,482],{"class":263},[236,670,657],{"class":279},[236,672,660],{"class":263},[236,674,676],{"class":238,"line":675},21,[236,677,318],{"emptyLinePlaceholder":317},[236,679,681,683,685],{"class":238,"line":680},22,[236,682,382],{"class":242},[236,684,385],{"class":353},[236,686,388],{"class":263},[236,688,690],{"class":238,"line":689},23,[236,691,311],{"class":263},[693,694,695],"style",{},"html pre.shiki code .sQsOY, html code.shiki .sQsOY{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#A626A4;--shiki-default-font-style:inherit;--shiki-dark:#C678DD;--shiki-dark-font-style:inherit}html pre.shiki code .s8dPH, html code.shiki .s8dPH{--shiki-light:#90A4AE;--shiki-default:#E45649;--shiki-dark:#E06C75}html pre.shiki code .sB4Xn, html code.shiki .sB4Xn{--shiki-light:#39ADB5;--shiki-default:#383A42;--shiki-dark:#ABB2BF}html pre.shiki code .sM89C, html code.shiki .sM89C{--shiki-light:#90A4AE;--shiki-default:#383A42;--shiki-dark:#ABB2BF}html pre.shiki code .spnjr, html code.shiki .spnjr{--shiki-light:#6182B8;--shiki-default:#4078F2;--shiki-dark:#61AFEF}html pre.shiki code .sVH1b, html code.shiki .sVH1b{--shiki-light:#39ADB5;--shiki-default:#50A14F;--shiki-dark:#98C379}html pre.shiki code .spZWa, html code.shiki .spZWa{--shiki-light:#91B859;--shiki-default:#50A14F;--shiki-dark:#98C379}html pre.shiki code .scPpd, html code.shiki .scPpd{--shiki-light:#90A4AE;--shiki-default:#0184BC;--shiki-dark:#56B6C2}html pre.shiki code .sriKn, html code.shiki .sriKn{--shiki-light:#F76D47;--shiki-default:#986801;--shiki-dark:#D19A66}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .seacL, html code.shiki .seacL{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0A1A7;--shiki-default-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic}",{"title":232,"searchDepth":276,"depth":276,"links":697},[698,699],{"id":224,"depth":276,"text":225},{"id":411,"depth":276,"text":412},"Create a blueprint for a struct or a function.","md",null,{},{"icon":24},{"title":124,"description":700},"6QNG-Id7kgjK_N1uxJdRy1X5kshZFYa6m-UVNQt7pR0",[708,709],{"title":115,"path":116,"stem":117,"description":702,"icon":24,"children":-1},{"title":128,"path":129,"stem":130,"description":710,"icon":24,"children":-1},"Beautiful way to handle errors!",1774971230664]