Skip to main content

src/helpers.erl

%%%-------------------------------------------------------------------
%%% erlrithmetician - linear algebra library for Erlang
%%% Copyright (C) 2026 E. G. Bland
%%%
%%% This program is free software: you can redistribute it and/or modify
%%% it under the terms of the GNU General Public License as published by
%%% the Free Software Foundation, either version 3 of the License, or
%%% (at your option) any later version.
%%%
%%% This program is distributed in the hope that it will be useful,
%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%%% GNU General Public License for more details.
%%%
%%% You should have received a copy of the GNU General Public License
%%% along with this program.  If not, see <https://www.gnu.org/licenses/>.
%%%-------------------------------------------------------------------

-module(helpers).

-export([zip_arrays/2]).

-spec zip_arrays(array:array(T), array:array(U)) -> array:array({ T, U }).

zip_arrays(Xs, Ys) ->
  MinSize = min(array:size(Xs), array:size(Ys)),
  array:from_list([{ array:get(Idx, Xs), array:get(Idx, Ys) } || Idx <- lists:seq(0, MinSize - 1)]).