![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/lib/gems/2.5.0/gems/tins-1.28.0/lib/tins/ |
Upload File : |
require 'tins/memoize' module Tins module ProcPrelude def apply(&my_proc) my_proc or raise ArgumentError, 'a block argument is required' lambda { |list| my_proc.call(*list) } end def map_apply(my_method, *args, &my_proc) my_proc or raise ArgumentError, 'a block argument is required' lambda { |x, y| my_proc.call(x, y.__send__(my_method, *args)) } end def call(obj, &my_proc) my_proc or raise ArgumentError, 'a block argument is required' obj.instance_eval(&my_proc) end def array lambda { |*list| list } end memoize_function :array, freeze: true def first lambda { |*list| list.first } end memoize_function :first, freeze: true alias head first def second lambda { |*list| list[1] } end memoize_function :second, freeze: true def tail lambda { |*list| list[1..-1] } end memoize_function :tail, freeze: true def last lambda { |*list| list.last } end memoize_function :last, freeze: true def rotate(n = 1) lambda { |*list| list.rotate(n) } end alias swap rotate def id1 lambda { |obj| obj } end memoize_function :id1, freeze: true def const(konst = nil, &my_proc) konst ||= my_proc.call lambda { |*_| konst } end def nth(n) lambda { |*list| list[n] } end def from(&block) my_method, binding = block.call, block.binding my_self = eval 'self', binding lambda { |*list| my_self.__send__(my_method, *list) } end end end