From a08193931e59540efd1054badb09ed283e7f4f90 Mon Sep 17 00:00:00 2001 From: Turiiya <34311583+ttytm@users.noreply.github.com> Date: Wed, 10 Apr 2024 02:40:53 +0200 Subject: [PATCH] Updated V for CPP developers (markdown) --- V-for-CPP-developers.md | 239 +++++++++++++++++++++++----------------- 1 file changed, 135 insertions(+), 104 deletions(-) diff --git a/V-for-CPP-developers.md b/V-for-CPP-developers.md index 61ce898..eae7682 100644 --- a/V-for-CPP-developers.md +++ b/V-for-CPP-developers.md @@ -2,234 +2,265 @@ Hello World -
-#include <iostream>
+
+```cpp
+#include 
 int main() {
-  std::cout << "Hello World!" << "\n";
+	std::cout < "Hello World!" < "\n";
 }
-
+``` + -
+
+```v
 fn main() {
-  println('Hello World!')
+	println('Hello World!')
 }
-
+``` + - Vector initialization -
-std::vector<int> numbers = {1, 2, 3, 4};
-
+ +```cpp +std::vector numbers = {1, 2, 3, 4}; +``` + -
+
+```v
 numbers := [1, 2, 3, 4]
-
+``` + Add an element to a vector -
+
+```cpp
 numbers.push_back(5);
-
+``` + -
-numbers << 5
-
+ +```v +numbers < 5 +``` + Printing a vector -
+
+```cpp
 std::copy(numbers.begin(), numbers.end(),
-    std::ostream_iterator(std::cout, " "));
-std::cout << '\n';
-
+ std::ostream_iterator(std::cout, " ")); +std::cout < '\n'; +``` + -
+
+```v
 println(numbers)
-
+``` + - Filtering a vector -
-std::copy_if(numbers.begin(), numbers.end(),
-  std::back_inserter(bar), 
-  [](int i){ return i % 2 == 0; });
 
-
+```cpp +std::copy_if(numbers.begin(), numbers.end(), + std::back_inserter(bar), + [](int i){ return i % 2 == 0; }); +``` + -
+
+```cpp
 numbers.filter(it % 2 == 0)
-
+``` + - - Reading a file -
-#include <iostream>
-#include <fstream>
+
+```cpp
+#include 
+#include 
 std::ifstream f("path");
 std::string text;
-  text.assign(std::istreambuf_iterator(f), {});
-  if (!f)
-    std::cerr << "error reading from file\n";
-
+ text.assign(std::istreambuf_iterator(f), {}); + if (!f) + std::cerr < "error reading from file\n"; +``` + -
+
+```v
 import os
+
 text := os.read_file(path) or {
-  eprintln(err)
+	eprintln(err)
 }
-
+``` + Monomorphic function -
-template <typename T>
+
+```cpp
+template 
 auto simple_fn(T param) {
-  return param;
+	return param;
 }
-auto value = simple_fn<int>(1);
-
+auto value = simple_fn1); +``` + -
-fn simple_fn<T>(param T) T {
-  return param
+
+```v
+fn simple_fn[T](param T) T {
+	return param
 }
 
 value := simple_fn(1)
-
+ +``` + - Monomorphic struct -
-template <typename T>
+
+```cpp
+template 
 struct generic_struct {
-  T value;
-  void generic_method();
+	T value;
+	void generic_method();
 };
 
-template <typename T>
-generic_struct<T>::generic_method() {
-  return;
+template 
+generic_struct:generic_method() {
+return;
 }
-
+ +``` + -
-struct GenericStruct<T> {
-  value T
+
+```v
+struct GenericStruct[T] {
+	value T
 }
 
-
-fn (g GenericStruct<T>) generic_method() {
-  return
+fn (g GenericStruct[T]) generic_method() {
+	return
 }
-
+``` + - Type reflection -
-#include <iostream>
+
+```cpp
+#include 
 using Number = int;
 
-template <typename T>
+template 
 consteval bool is_number(T data) {
-  if constexpr (std::is_same<T, Number>()) {
-    return true;
-  } else {
-    return false;
-  }
+	if constexpr (std::is_same()) {
+		return true;
+	} else {
+		return false;
+	}
 }
 
-std::cout << is_number<Number>(0) << "\n";
-
+std::cout << is_number(0) << "\n"; +``` + -
+
+```v
 
 type Number = int
 
-fn is_number<T>(data T) bool {
-  $if T is Number {
-    return true
-  } $else {
-    return false
-  }
+fn is_number[T](data T) bool {
+	$if T is Number {
+		return true
+	} $else {
+		return false
+	}
 }
 
-
 println(is_number(Number(0)))
-
+ +``` + Standard map -
-#include <iostream>
-#include <map>
+
+```cpp
+#include 
+#include 
+
 std::map my_map {
-  {"KEY_1", 0},
-  {"KEY_2", 10},
+	{"KEY_1", 0},
+	{"KEY_2", 10},
 };
 
 for (const auto &[key, value] : my_map) {
-  std::cout << key << ": " << value << ", ";
+	std::cout << key << ": " << value << ", ";
 }
 std::cout << "\n";
-
+``` + -
-
 
+```v
 my_map := map {
-  'KEY_1': 0
-  'KEY_2': 10
+	'KEY_1': 0
+	'KEY_2': 10
 }
 
 println(my_map)
-
+``` + - - -