@@ -2000,41 +2000,18 @@ defmodule Kernel do
20002000 Elixir conventions (i.e. it expects the tuple as first argument,
20012001 zero-index based).
20022002
2003- Please note that in versions of Erlang prior to R16B there is no BIF
2004- for this operation and it is emulated by converting the tuple to a list
2005- and back and is, therefore, inefficient.
2006-
20072003 ## Example
20082004
20092005 iex> tuple = { :bar, :baz }
20102006 ...> insert_elem(tuple, 0, :foo)
20112007 { :foo, :bar, :baz }
20122008 """
20132009 defmacro insert_elem(tuple, index, value) when is_integer(index) do
2014- case :proplists.get_value(:insert_element,
2015- :proplists.get_value(:exports, :erlang.module_info,[])) do
2016- 3 ->
2017- quote do: :erlang.insert_element(unquote(index + 1), unquote(tuple), unquote(value))
2018- :undefined ->
2019- do_insert_elem(tuple, index, value)
2020- end
2021- end
2022- defmacro insert_elem(tuple, index, value) do
2023- case :proplists.get_value(:insert_element,
2024- :proplists.get_value(:exports, :erlang.module_info,[])) do
2025- 3 ->
2026- quote do: :erlang.insert_element(unquote(index) + 1, unquote(tuple), unquote(value))
2027- :undefined ->
2028- do_insert_elem(tuple, index, value)
2029- end
2010+ quote do: :erlang.insert_element(unquote(index + 1), unquote(tuple), unquote(value))
20302011 end
20312012
2032- defp do_insert_elem(tuple, index, value) do
2033- quote do
2034- {h, t} = :lists.split(unquote(index),
2035- tuple_to_list(unquote(tuple)))
2036- list_to_tuple(h ++ [unquote(value)|t])
2037- end
2013+ defmacro insert_elem(tuple, index, value) do
2014+ quote do: :erlang.insert_element(unquote(index) + 1, unquote(tuple), unquote(value))
20382015 end
20392016
20402017 @doc """
@@ -2053,30 +2030,11 @@ defmodule Kernel do
20532030 { :bar, :baz }
20542031 """
20552032 defmacro delete_elem(tuple, index) when is_integer(index) do
2056- case :proplists.get_value(:delete_element,
2057- :proplists.get_value(:exports, :erlang.module_info,[])) do
2058- 2 ->
2059- quote do: :erlang.delete_element(unquote(index + 1), unquote(tuple))
2060- :undefined ->
2061- do_delete_elem(tuple, index)
2062- end
2063- end
2064- defmacro delete_elem(tuple, index) do
2065- case :proplists.get_value(:delete_element,
2066- :proplists.get_value(:exports, :erlang.module_info,[])) do
2067- 2 ->
2068- quote do: :erlang.delete_element(unquote(index) + 1, unquote(tuple))
2069- :undefined ->
2070- do_delete_elem(tuple, index)
2071- end
2033+ quote do: :erlang.delete_element(unquote(index + 1), unquote(tuple))
20722034 end
20732035
2074- defp do_delete_elem(tuple, index) do
2075- quote do
2076- {h, [_|t]} = :lists.split(unquote(index),
2077- tuple_to_list(unquote(tuple)))
2078- list_to_tuple(h ++ t)
2079- end
2036+ defmacro delete_elem(tuple, index) do
2037+ quote do: :erlang.delete_element(unquote(index) + 1, unquote(tuple))
20802038 end
20812039
20822040 @doc """
@@ -2654,15 +2612,7 @@ defmodule Kernel do
26542612 123
26552613
26562614 """
2657- defmacro binary_to_integer ( some_binary ) do
2658- case :proplists . get_value ( :binary_to_integer ,
2659- :proplists . get_value ( :exports , :erlang . module_info , [ ] ) ) do
2660- 2 ->
2661- quote do: :erlang . binary_to_integer ( unquote ( some_binary ) )
2662- :undefined ->
2663- quote do: list_to_integer ( binary_to_list ( unquote ( some_binary ) ) )
2664- end
2665- end
2615+ def binary_to_integer ( some_binary )
26662616
26672617 @ doc """
26682618 Returns an integer whose text representation in base `base`
@@ -2674,15 +2624,7 @@ defmodule Kernel do
26742624 1023
26752625
26762626 """
2677- defmacro binary_to_integer ( some_binary , base ) do
2678- case :proplists . get_value ( :binary_to_integer ,
2679- :proplists . get_value ( :exports , :erlang . module_info , [ ] ) ) do
2680- 2 ->
2681- quote do: :erlang . binary_to_integer ( unquote ( some_binary ) , unquote ( base ) )
2682- :undefined ->
2683- quote do: list_to_integer ( binary_to_list ( unquote ( some_binary ) ) , unquote ( base ) )
2684- end
2685- end
2627+ def binary_to_integer ( some_binary , base )
26862628
26872629 @ doc """
26882630 Returns a float whose text representation is `some_binary`.
@@ -2693,15 +2635,7 @@ defmodule Kernel do
26932635 2.2017764
26942636
26952637 """
2696- defmacro binary_to_float ( some_binary ) do
2697- case :proplists . get_value ( :binary_to_float ,
2698- :proplists . get_value ( :exports , :erlang . module_info , [ ] ) ) do
2699- 1 ->
2700- quote do: :erlang . binary_to_float ( unquote ( some_binary ) )
2701- :undefined ->
2702- quote do: list_to_float ( binary_to_list ( unquote ( some_binary ) ) )
2703- end
2704- end
2638+ def binary_to_float ( some_binary )
27052639
27062640 @ doc """
27072641 Returns a binary which corresponds to the text representation
@@ -2713,35 +2647,19 @@ defmodule Kernel do
27132647 "123"
27142648
27152649 """
2716- defmacro integer_to_binary ( some_integer ) do
2717- case :proplists . get_value ( :integer_to_binary ,
2718- :proplists . get_value ( :exports , :erlang . module_info , [ ] ) ) do
2719- 2 ->
2720- quote do: :erlang . integer_to_binary ( unquote ( some_integer ) )
2721- :undefined ->
2722- quote do: list_to_binary ( integer_to_list ( unquote ( some_integer ) ) )
2723- end
2724- end
2650+ def integer_to_binary ( some_integer )
27252651
27262652 @ doc """
27272653 Returns a binary which corresponds to the text representation
27282654 of `some_integer` in base `base`.
27292655
27302656 ## Examples
27312657
2732- iex> integer_to_binary(77 )
2733- "77 "
2658+ iex> integer_to_binary(100, 16 )
2659+ "64 "
27342660
27352661 """
2736- defmacro integer_to_binary ( some_integer , base ) do
2737- case :proplists . get_value ( :integer_to_binary ,
2738- :proplists . get_value ( :exports , :erlang . module_info , [ ] ) ) do
2739- 2 ->
2740- quote do: :erlang . integer_to_binary ( unquote ( some_integer ) , unquote ( base ) )
2741- :undefined ->
2742- quote do: list_to_binary ( integer_to_list ( unquote ( some_integer ) , unquote ( base ) ) )
2743- end
2744- end
2662+ def integer_to_binary ( some_integer , base )
27452663
27462664 @ doc """
27472665 Returns a binary which corresponds to the text representation
@@ -2753,15 +2671,7 @@ defmodule Kernel do
27532671 "7.00000000000000000000e+00"
27542672
27552673 """
2756- defmacro float_to_binary ( some_float ) do
2757- case :proplists . get_value ( :float_to_binary ,
2758- :proplists . get_value ( :exports , :erlang . module_info , [ ] ) ) do
2759- 2 ->
2760- quote do: :erlang . float_to_binary ( unquote ( some_float ) )
2761- :undefined ->
2762- quote do: list_to_binary ( float_to_list ( unquote ( some_float ) ) )
2763- end
2764- end
2674+ def float_to_binary ( some_float )
27652675
27662676 @ doc """
27672677 Returns a binary which corresponds to the text representation
@@ -2782,6 +2692,18 @@ defmodule Kernel do
27822692 :erlang . float_to_binary ( float , expand_compact ( options ) )
27832693 end
27842694
2695+ @doc """
2696+ Returns a list which corresponds to the char list representation
2697+ of `some_float`.
2698+
2699+ ## Examples
2700+
2701+ iex> float_to_binary( 7.0 )
2702+ '7.00000000000000000000e+00 '
2703+
2704+ """
2705+ def float_to_list( some_float)
2706+
27852707 @ doc """
27862708 Returns a list which corresponds to the text representation
27872709 of `float`.
0 commit comments