İksir - Kitaplıklar

Elixir, Erlang kitaplıkları ile mükemmel birlikte çalışabilirlik sağlar. Birkaç kütüphaneyi kısaca tartışalım.

İkili Modül

Yerleşik Elixir String modülü, UTF-8 kodlu ikili dosyaları işler. İkili modül, UTF-8 olarak kodlanmış olması gerekmeyen ikili verilerle uğraşırken kullanışlıdır. İkili modülü daha iyi anlamak için bir örnek ele alalım -

# UTF-8
IO.puts(String.to_char_list("Ø"))

# binary
IO.puts(:binary.bin_to_list "Ø")

Yukarıdaki program çalıştırıldığında, aşağıdaki sonucu verir -

[216]
[195, 152]

Yukarıdaki örnek farkı göstermektedir; String modülü UTF-8 kod noktalarını döndürürken: ikili, ham veri baytlarıyla ilgilenir.

Kripto Modülü

Kripto modülü, karma işlevler, dijital imzalar, şifreleme ve daha fazlasını içerir. Bu modül Erlang standart kitaplığının bir parçası değildir, ancak Erlang dağıtımına dahildir. Bu, şunları listelemeniz gerektiği anlamına gelir: projenizin uygulamalar listesinde her kullandığınızda kripto. Kripto modülünü kullanarak bir örnek görelim -

IO.puts(Base.encode16(:crypto.hash(:sha256, "Elixir")))

Yukarıdaki program çalıştırıldığında, aşağıdaki sonucu verir -

3315715A7A3AD57428298676C5AE465DADA38D951BDFAC9348A8A31E9C7401CB

Digraph Modülü

Digraph modülü, köşelerden ve kenarlardan oluşan yönlendirilmiş grafiklerle uğraşmak için işlevler içerir. Grafiği oluşturduktan sonra, oradaki algoritmalar, örneğin, iki köşe arasındaki en kısa yolu veya grafikteki döngüleri bulmaya yardımcı olacaktır. Unutmayın ki fonksiyonlarin :digraph Eklenen köşeleri veya kenarları döndürürken, grafik yapısını bir yan etki olarak dolaylı olarak değiştirin.

digraph = :digraph.new()
coords = [{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}]
[v0, v1, v2] = (for c <- coords, do: :digraph.add_vertex(digraph, c))
:digraph.add_edge(digraph, v0, v1)
:digraph.add_edge(digraph, v1, v2)
for point <- :digraph.get_short_path(digraph, v0, v2) do 
   {x, y} = point
   IO.puts("#{x}, #{y}")
end

Yukarıdaki program çalıştırıldığında, aşağıdaki sonucu verir -

0.0, 0.0
1.0, 0.0
1.0, 1.0

Matematik Modülü

Matematik modülü, trigonometri, üstel ve logaritmik fonksiyonları kapsayan yaygın matematiksel işlemleri içerir. Math modülünün nasıl çalıştığını anlamak için aşağıdaki örneği ele alalım -

# Value of pi
IO.puts(:math.pi())

# Logarithm
IO.puts(:math.log(7.694785265142018e23))

# Exponentiation
IO.puts(:math.exp(55.0))

#...

Yukarıdaki program çalıştırıldığında, aşağıdaki sonucu verir -

3.141592653589793
55.0
7.694785265142018e23

Kuyruk Modülü

Kuyruk, FIFO (ilk giren ilk çıkar) kuyruklarını verimli bir şekilde uygulayan (çift uçlu) bir veri yapısıdır. Aşağıdaki örnek, Kuyruk modülünün nasıl çalıştığını gösterir -

q = :queue.new
q = :queue.in("A", q)
q = :queue.in("B", q)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)

Yukarıdaki program çalıştırıldığında, aşağıdaki sonucu verir -

A
B